Как реализовать преобразование двоичного кода в ascii? (и наоборот)

Я хочу написать две простые утилиты:

  1. Получает двоичный файл и преобразует его в текстовый файл (формат ASCII).
  2. Получает текстовый файл в формате указанного выше файла и восстанавливает исходный двоичный файл.

Причина, по которой мне это нужно, заключается в том, что очень глупая, но все же причина. У меня два компьютера - один с доступом в интернет, другой без. Пишу софт на тот без интернета. Я получаю электронные письма на 2-м. Мне нужно передавать двоичные файлы из одного в другой (например, jar), но единственная связь между ними - это буфер обмена (только текст).

Возможно, это очень локальная проблема, но я предполагаю, что у нее есть какое-то решение в мире шифрования/сжатия/передачи данных по сети.

Единственное, что я мог придумать, это просмотреть двоичный файл и преобразовать каждый байт в его HEX-представление, поэтому для каждого байта я получу два символа ASCII (т.е. два байта). есть что-нибудь получше? (Это решение удваивает объем информации и может быть невозможно передать через буфер обмена)

Одно ограничение - мне это нужно как решение на основе Java (я хочу написать его сам)


person RonK    schedule 29.04.2011    source источник
comment
И за какие грехи Ведьма так тебя покалечила? о_О   -  person Vladimir Dyuzhev    schedule 29.04.2011
comment
Политика всей компании - я просто выполняю свой долг сотрудника, чтобы найти черный ход...   -  person RonK    schedule 29.04.2011
comment
Как работает этот буфер обмена? Если это какая-то сеть, возможно, будет лучше, если вы перехватите это соединение.   -  person corsiKa    schedule 29.04.2011
comment
Как именно они связаны, что один компьютер без интернета может получить доступ к буферу обмена другого компьютера. Я никогда не видел, чтобы это делалось раньше. У вас нет другого способа передачи файлов, что делают все остальные?   -  person Security Hound    schedule 29.04.2011
comment
Также рекомендую флешку.   -  person corsiKa    schedule 29.04.2011
comment
Два компьютера можно подключить только через удаленный рабочий стол. Интернет - виртуальный (я думаю, VDM VM Ware). Поэтому я предполагаю, что именно так они предотвращают доступ рабочего стола к Интернету. Точно так же работает буфер обмена — потому что подключение к удаленному рабочему столу поддерживает его (и оно не было заблокировано). Так что флешка не вариант (серьезно - я не настолько туп :))   -  person RonK    schedule 29.04.2011


Ответы (1)


Google для Base64 и используйте кодек Apache commons, чтобы иметь готовую к использованию реализацию.

person JB Nizet    schedule 29.04.2011
comment
Не могли бы вы добавить некоторые подробности? Что означает «Google для Base64»? - person RonK; 29.04.2011
comment
Вы хотите прочитать двоичный файл и закодировать его в base64. Это кодирует все содержимое файла base64 в виде текста (64 различных символа). Это можно скопировать. С другой стороны, base64 декодирует его обратно в двоичный код. - person nojo; 29.04.2011
comment
@Ronk: В Google: использование веб-браузера и использование Google для поиска чего-либо. Base64 — это способ кодирования двоичных данных в ASCII. 4 символа необходимы для кодирования 3 байтов двоичных данных, что более эффективно, чем шестнадцатеричное кодирование. Кодек Apache commons имеет реализацию этого алгоритма кодирования/декодирования. - person JB Nizet; 30.04.2011