Подтвердить что ты не робот

Разница между текстовым файлом и двоичным файлом

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

4b9b3361

Ответ 1

На нижнем уровне все биты... true. Однако некоторые каналы передачи имеют семь битов на каждый байт, а другие каналы передачи имеют восемь бит на байт. Если вы передаете текст ASCII по семибитовому каналу, все будет в порядке. Двоичные данные становятся искалеченными.

Кроме того, разные системы используют разные соглашения для окончаний строк: LF и CRLF являются общими, но в некоторых системах используется CR или NEL. Режим текстовой передачи автоматически преобразует концы строк, что приведет к повреждению двоичных файлов.

Однако в наши дни это в основном исторический интерес. Большинство каналов передачи имеют восемь бит (например, HTTP), и большинство пользователей прекрасно справляются с любой линией, заканчивающей их.

Некоторые примеры 7-битных каналов: SMTP (номинально без расширений), SMS, Telnet, некоторые последовательные соединения. Интернет не всегда строился на TCP/IP, и он показывает.

Кроме того, спецификация HTTP указывает, что

Когда в канонической форме подтипы мультимедиа типа "текст" используют CRLF в качестве разрыва текстовой строки. HTTP релаксирует это требование и позволяет переносить текстовые носители только с простым CR или LF, представляющим собой разрыв строки, когда он выполняется последовательно для всего тела объекта.

Ответ 2

Отличие между ними важно, поскольку разные ОС обрабатывают текстовые файлы по-разному. Например, в * nix вы заканчиваете свои строки только с помощью \n, а в MS OS вы используете \r\n, а в Macs вы используете \n\r. Программное обеспечение, такое как клиенты FTP, пытается изменить окончание строк в текстовых файлах в соответствии с целевой ОС, добавив/удалив символы. Это делается для того, чтобы текстовый файл выглядел правильно на целевой ОС.

например, если вы создаете текстовый файл в * nix с разрывами строк и пытаетесь скопировать его в окно Windows в виде двоичного файла и открыть его в блокноте, вы не увидите ни одного конца строки, но просто забивать текст.

Ответ 3

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

Хотя оба двоичных и текстовых файла содержат данные, хранящиеся в виде серии (биты (двоичные значения 1s и Os), биты в текстовых файлах представляют символы, а биты в двоичных файлах представляют собой пользовательские данные.

Ответ 4

Важно добавить к уже предоставленным ответам, что текстовые файлы и двоичные файлы представляют собой байты, но текстовые файлы отличаются от двоичных файлов тем, что в байтах понимаются символы. Отображение байтов в символы выполняется последовательно над файлом с использованием определенной кодовой страницы или Unicode. При использовании 7 или 8-битных кодовых страниц вы можете вращать циферблат при чтении этих файлов и интерпретировать их с помощью английского алфавита, немецкого алфавита, русского алфавита или других. Это вращение циферблата не влияет на байты, оно влияет на то, какие символы выбраны так, чтобы соответствовать байтам.

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

С двоичными файлами не существует неявного соглашения о кодировке символов или определении "строки".

Ответ 5

Все файлы машинного языка на самом деле являются двоичными файлами.

Для открытия двоичного файла режим файла следует указывать как "rb" или "wb" в команде fopen. В противном случае все файлы будут открываться в режиме по умолчанию, который является текстовым.

Можно отметить, что текстовые файлы также могут храниться и обрабатываться как двоичные файлы, но не наоборот.

Двоичные файлы отличаются от текстового файла двумя способами:

  • Сохранение символов новой строки
  • Символ EOF

Например:

  • wt-t обозначает текстовый файл
  • Wb-b обозначает двоичный файл

Двоичные файлы не хранят в конце какого-либо специального символа, либо конец файла проверяется с помощью собственного размера.