В чем разница между открытым текстом и бинарными данными?


Многие языки имеют функции, которые обрабатывают только "открытый текст", а не двоичный. Означает ли это, что будут разрешены только символы в диапазоне ASCII?

Двоичный код-это просто ряд байтов, разве он не похож на обычный текст, который является просто рядом байтов, интерпретируемых как символы? Итак, может ли обычный текст хранить те же форматы данных / протоколы, что и двоичный?

5 14

5 ответов:

Это часто означает, что язык может свободно интерпретировать символы управления certian, такие как значения 10 или 13, как логические Терминаторы строк. Другими словами, операция вывода может автоматически добавлять эти символы в конце, а операция ввода может удалить их из ввода (и/или завершить чтение там).

Напротив, языковые операции ввода-вывода, которые рекламируют работу с "двоичными" данными, обычно включают входной параметр для длины данных работать дальше, так как нет другого способа (кроме чтения последнего конца файла) узнать, когда это будет сделано.

Обычный текст читается человеком, двоичный файл обычно не читается человеком, так как он состоит из печатаемых и непечатаемых символов.

Попробуйте открыть файл jpeg с помощью текстового редактора (например, notepad или vim), и вы поймете, что я имею в виду.

Двоичный файл обычно строится таким образом, чтобы оптимизировать скорость, так как никакой синтаксический анализ не требуется. Обычный текстовый файл можно редактировать вручную, а двоичный - нет.

"открытый текст" может иметь несколько значений.

Наиболее полезным в этом контексте является то, что это просто двоичные файлы, организованные в последовательности байтов, которые конкретная компьютерная система может перевести в конечный набор того, что она считает "текстовыми" символами.

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

Третий, еще более ограничительный смысл заключается в том, что эта система должна быть "простым" текстовым редактором/средством просмотра. Обычно подразумевается кодировка ASCII. Но, действительно, есть очень небольшая разница между вами, человеком, читающим текст, закодированный в каком-то фанковом формате и отображаемый проприетарной программой, и VI текстовым редактором, читающим кодированный ASCII файл.

В контексте программирования, Ваша среда программирования (comprized ОС + система Апис + ваши языковые возможности) определяет как набор" текстовых " символов, так и набор кодировок, которые он способен прочитать, чтобы преобразовать в эти "текстовые" символы. Обратите внимание, что это не обязательно означает ASCII, английский или 8 бит - например, Perl может изначально читать и использовать полный набор символов Unicode.

Чтобы ответить на ваш конкретный вопрос, вы можете определенно использовать" символьные " строки для передачи произвольных байтовых последовательностей, с оговоркой, что соглашения о завершении строк должны применять. Проблема в том, что функции, которые уже существуют для "обработки символьных данных", вероятно, не будут иметь никакой полезной функциональности для работы с вашими двоичными данными.

Как правило, это зависит от языка / среды / функциональности.

Двоичные данные всегда таковы: двоичные. Он передается без изменений.

Режим"обычный текст" может означать одно или несколько из следующих значений:

  • поток байтов разбивается на строки. Разделители строк - \r, \n, или \r\n, или \n\r. иногда это зависит от операционной системы (например, *nix любит \n, а windows любит \r\n). Окончание строки может быть скорректировано для чтения применение
  • кодировка символов может быть скорректирована. Среда может обнаружить и / или преобразовать исходную кодировку в кодировку, ожидаемую приложением
  • вероятно, к этому списку следует добавить еще несколько конверсий, но в данный момент я больше ничего не могу придумать

Технически ничего. Обычный текст-это форма двоичных данных. Однако основное различие заключается в том, как хранятся значения. Подумайте о том, как может храниться целое число. В двоичных данных он будет использовать формат дополнения двух, вероятно, занимающий 32 бита пространства. В текстовом формате число будет храниться в виде ряда цифр Юникода. Таким образом, число 50 будет сохранено как 0x32 (дополнено, чтобы занять 32 бита) в двоичном формате, но будет сохранено как '5' '0' в обычном тексте.