Чем отличаются бинарные файлы от текстовых
Перейти к содержимому

Чем отличаются бинарные файлы от текстовых

  • автор:

Отличие текстовых и бинарных файлов (модификаторы b и t)

Всем привет.
Просто Си
Читал вот про текстовые и бинарные файлы, но так и не смог понять, как конвертятся символы \r\n когда мы открываем файл как бинарный или как текстовый.
Вот допустим есть текстовый файл, в котром при просмотре мы можем увидеть две строки:

1. Тоесть на диске в Windows этот файл содержит 10 символов, а именно «one\r\ntwo\r\n», тоесть размер каждой буковки и для каждой строки еще и две пары символов \r\n. Это так?

2. Если мы читаем-записываем этот файл как бинарный и заносим все элементы этого файла в строковый массив то в нем будут эти символы \r\n ?
Нужно ли сдесь следить чтобы при записи этого же массива обратно в файл в нем не оказалось кроме r\n\ еще и \o ?
Что будет если я попытаюсь записать в этот файл строку с символом \0 ?

3. Если мы читаем-записываем этот файл как текстовый, он автоматически заменит \r\n\ на \0 или как он вообще поступит в этом случае?
Как запишется в этот файл массив char с признаком конца \0 ?
Если записать две строки с символом \0 — он их запишет вторую под первой?

2 ответа

12 декабря 2006 года
630 / / 21.10.2005

В общем текстовых файлов нету. Все файлы бинарные. (Запомни 🙂 ). Другое дело ф-ции для работы с файлами. И методы отображения на экран.

Запись.
Завершающий 0 не пишется текстовыми ф-циями.
По сути запись мало отличается от бинарной, то есть пишется все то, что ты туда всунеш.
При твоем желании сделать перевод строки, ты явно, в записываемой строке, указываеш последовательность \r\n.

А вот все приколы начинаются с чтением.
Когда ты используеш «текстовую» ф-цию для чтения из файла строки (fgets например) то, при достижении последовательности 0x0D-0x0A(для вин) ф-ция прекращает чтение, формирует строку, не включая 0x0D, 0x0A (хотя могут быть варианты, может и включить, читать описалово нуна) и дополняет ее 0(тут тоже с вариантами — но это есть в описании к конкретным ф-циям.). Следующий вызов к ф-ции чтения приведет к чтению СЛЕДУЮЩИХ ЗА 0x0D, 0x0A байтов и формирования строки из них.

Кстати 0x0D, 0x0A — не единственные «запрещенные в текстовых ф-циях» значения. Все значения до 0x20(пробел) так или иначе транслируются (т.е. не попадают в строку в обычном виде). Например 0х09 — может транслироватся в 4 пробела, или же остатся табом. Но при отображении на экран символ таб, хоть он и один — все равно растянется.

Теперь конкретнее по твоим вопросам.
1) Не факт. Возможна юникс нотация когда в файле содержится лиш \n. Но текстовая ф-ция прочитает за раз все-равно только до этого символа.

2)
>>заносим все элементы этого файла в строковый массив то в нем будут эти символы \r\n ?

Для большинства ф-ций — нет, последовательность \r\n не занесется.
На счет \0 — не помню, нужно проверить. Возможно некоторые ф-ции его и возьмут, тогда у тебя за одно чтение получится 2 строки. Но скорее всего, что не включат.

НО \0 добавится автоматом, в конец строки ПОСЛЕ ее прочтения.

3)Ну тут кажись и так должно уже быть все понятно.

Ну хз, вроде в основном все. Дальше начнутся тонскости по использованию разделителя строк. Например ф-ция fscanf читает строки не до \r\n, а до первого сивола разделителя (символ

Чем текстовый файл отличается от бинарного

Т радиционно все файлы принято делить на группы. Есть текстовые файлы, есть видео, аудио, изображения, есть исполняемые файлы программ. А еще есть файлы, именуемые бинарными или двоичными. Обычно под бинарными понимают исполняемые файлы, но насколько правильным является такое определение и есть ли какое-то принципиальное различие между бинарными и текстовыми файлами?

Кто-то скажет, конечно есть, текстовый файл — это тот, который можно открыть текстовым редактором. Правда, здесь необходимо уточнить, каким именно редактором нужно открывать тот или иной файл. Блокнотом? Взять хотя бы документ Microsoft Word . Его тоже можно открыть Блокнотом или Notepad++ , но какова только будет интерпретация его содержимого? Очевидно, что ничего прочитать в нём вы не сможете.

Notepad++

Впрочем, Блокнотом вы можете открыть и аудио, и изображение, и при этом тоже получите набор текстовых знаков, однако никому ни придет в голову назвать такие файлы текстовыми. Получается так, что текстовый файл это тот, содержимое которого представлено человеческим языком и не важно, какая программа перевела его содержимое на этот язык. А что насчет файлов скриптов, а еще лучше раскомпилированных exe -файлов, ведь их содержимое (исходный код) тоже обычно представлено человеческим языком? Они получаются тоже текстовые?

Исходный код

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

Meta name

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

Null

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

Бинарный файл

Бинарный файл (binary в переводе с английского — «двоичный») — это формат представления данных с использованием двоичной системы счисления. В отличие от текстовых файлов, которые содержат информацию в виде символов (букв, цифр, спецсимволов и т. д.), такие форматы хранят информацию как последовательность битов (минимальных единиц информации, состоящих из 0 или 1). Двоичные файлы могут содержать данные разных типов, такие как числа (целые или с плавающей точкой), символы, звуковые или видеофайлы, изображения и многое другое.

«IT-специалист с нуля» наш лучший курс для старта в IT

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

картинка - 2023-03-14T191232.869

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (2)

Что такое бинарный файл (двоичный файл)

Бинарными называются файлы с данными в двоичном формате, что означает, что каждому значению соответствует определенная последовательность битов. Например, для представления числа 7 в такой системе счисления требуется 4 бита: 0111. Бинарные файлы также могут содержать заголовки и дополнительные метаданные, которые описывают структуру и содержимое файла. Они используются программами для корректной интерпретации и обработки данных, записанных в двоичном коде. Некоторые примеры бинарных форматов файлов включают изображения (например, BMP, JPEG, PNG), звуковые файлы (например, WAV, MP3), базы данных и т. д.

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

  • Формат хранения данных. Бинарные файлы содержат информацию в двоичном формате, то есть в виде последовательности нулей и единиц. Текстовые файлы, напротив, хранят данные в виде символов, используя определенную кодировку, такую как ASCII или UTF-8.
  • Читаемость данных. Одной из важных особенностей бинарных файлов является то, что человек не может их воспринимать без специальных программ или средств для их интерпретации. Текстовые файлы, с другой стороны, содержат информацию в виде понятного нам текста. Ее можно прочитать с помощью любого текстового редактора.
  • Объем хранимых данных. Бинарные файлы обеспечивают более компактное хранение данных, так как они сохраняют исходный двоичный код без лишней информации. Текстовые файлы, в свою очередь, обычно требуют большего объема памяти, так как единицы измерения информации имеют более высокую степень диспетчеризации. Кроме того, использование двоичных данных обеспечивает их более точное представление, так как текстовые форматы могут потерять точность при конвертации чисел или при хранении особенных символов.
  • Обработка данных. Бинарные файлы могут быть менее доступными для работы с данными в сравнении с текстовыми файлами. Их содержимое не может быть прочитано или отредактировано обычным текстовым редактором, и для работы требуется специализированное программное обеспечение. Кроме того, разработчики программ должны быть особенно внимательны при работе с бинарными файлами, чтобы избежать проблем совместимости или потери данных. Все это делает их более сложными для работы по сравнению с текстовыми файлами.
  • Типы данных. Бинарные файлы могут хранить любые данные, включая числа, строки, изображения, звуковые файлы и другие. Текстовые файлы, с другой стороны, предназначены для хранения текстов, состоящих из букв, цифр, общих и специальных символов.

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

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Структура бинарного файла

Структура бинарных данных может быть представлена следующим образом:

  • Заголовок файла. Он содержит основные сведения о файле, такие как размер, дату его создания и другие метаданные. Заголовок является необязательным элементом, но часто используется для хранения дополнительной информации о файле.
  • Блоки данных. В бинарном файле их может быть несколько, между собой они разделяются маркерами. Блоки данных обычно имеют фиксированный размер и могут содержать любые данные, включая числа, строки, структуры и т. д.
  • Структура данных. Бинарный файл может содержать структурированные данные, такие как массивы, списки, деревья и другие типы структур. Они представлены в виде последовательности блоков информации и используют специальные маркеры для обозначения начала и конца.
  • Флаги и метки. В структуре двоичного файла они используются для определения определенных свойств или состояний содержащейся в нем информации. Например, флаги могут указывать на наличие ошибок или дополнительных сведений о данных.
  • Конец файла. Бинарный файл обычно содержит маркер, который определяет конец содержащихся в нем данных. Он используется для определения размера и проверки целостности файла.

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

Чтение и обработка бинарных файлов

Работа с бинарными файлами осуществляется в несколько этапов:

  • Открытие файла. Для начала работы с бинарными данными необходимо открыть их с помощью специальных инструментов или методов в языке программирования. При открытии файла задается режим доступа, как для чтения, так и для записи.
  • Чтение данных из файла. После открытия бинарного файла можно начать считывать данные из него. Это может быть выполнено блоками или пошагово, в зависимости от структуры файла и содержащейся в нем информации. Для считывания данных из файла используются специальные функции или методы, которые позволяют получить необработанные бинарные данные.
  • Преобразование данных. Считанные бинарные данные могут требовать преобразования для дальнейшей обработки. Например, если считаны данные в виде последовательности байтов, то их можно превратить их в числа или строки в соответствии с требованиями программы.
  • Обработка данных. После преобразования бинарных данных можно приступить непосредственно к работе с ними. В зависимости от цели обработки можно выполнять различные операции, такие как поиск и замена значений, фильтрация, анализ структуры файла и другие.
  • Запись в бинарный файл. Если необходимо изменить или добавить данные в двоичный файл, можно воспользоваться соответствующими функциями или методами записи. Новая информация должна быть предварительно преобразована в бинарный формат, если это требуется.
  • Закрытие файла. После завершения чтения и обработки бинарного файла необходимо его закрыть, чтобы освободить ресурсы и убедиться, что все изменения сохранены.

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

  • IDA Pro. Это одна из самых популярных программ для анализа и обратной разработки бинарных файлов. IDA Pro предоставляет широкие возможности для исследования исполняемых файлов, дизассемблирования кода, поиска уязвимостей и обнаружения потенциальных вредоносных программ.
  • OllyDbg. Это отладчик для анализа исполняемых файлов. OllyDbg позволяет разбирать, изменять и отлаживать код, содержащийся в бинарных файлах. Он полезен для исследования и обнаружения уязвимостей, а также для создания патчей и исправления ошибок в программном обеспечении.
  • HxD. Это бесплатный шестнадцатеричный и дисковый редактор, который позволяет просматривать и изменять содержимое. HxD обеспечивает удобный интерфейс для просмотра и редактирования в различных форматах, а также поддерживает различные операции, такие как вставка, удаление и замена данных.
  • FileAlyzer. Это мощный инструмент для анализа бинарных данных. FileAlyzer позволяет просматривать различные секции файлов, анализировать структуру и содержимое, искать строковые значения и выполнять другие операции для получения подробной информации о файле.
  • Binwalk. Это инструмент для анализа и извлечения данных из бинарных файлов, таких как встроенные системы, образы файловых систем и другие встраиваемые ресурсы. Binwalk позволяет обнаруживать и извлекать различные типы файлов, а также искать подписи и присущую им информацию.

Применение бинарных файлов в программировании

Хранение и передача сложных структур данных. Бинарные файлы обеспечивают компактное хранение информации в двоичной форме. Они позволяют сохранять и восстанавливать сложные объекты, такие как массивы, структуры, классы и другие типы данных, без потери их исходной структуры и формата. Благодаря этому бинарные файлы используются для работы с большими объемами информации, такими как изображения, звуковые файлы или базы данных.

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

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

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

Работа с медиа. С помощью двоичных данных можно сохранять изображения в форматах, специально разработанных для этой цели, таких как BMP, JPEG, PNG и других. Бинарные форматы обязательно сохраняют каждый пиксель изображения и все его детали, что делает их наиболее подходящими для работы с графикой. Двоичные файлы также широко применяются в обработке аудио- и видеофайлов. Форматы, такие как MP3, WAV, AVI, MP4 и многие другие, используют двоичное представление данных для хранения звуковой и видеоинформации. Бинарные файлы позволяют точное сохранение и воспроизведение этих данных, обеспечивая качественную обработку и воспроизведение медиаресурсов.

Разработка программного обеспечения. Бинарные файлы используются в процессе разработки программного обеспечения для хранения кода и исполняемых файлов. Бинарные форматы обеспечивают эффективную компиляцию, линковку и выполнение кода, что делает их необходимым инструментом для создания и запуска программ.

Работа с базами данных. Бинарные файлы используются для хранения и обработки информации в БД. Они позволяют компактно сохранять большие объемы информации, такой как текст, числа, даты и другие значения. Бинарные форматы эффективно управляют структурой и доступом к данным, обеспечивая быструю и надежную работу с ними.

Недостатки бинарных файлов

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

Неудобочитаемость. Бинарные файлы хранят данные в двоичной форме, которая нечитаема для человека. Это затрудняет процесс их отладки и тестирования, которые требуют использования специальных интерпретаторов, преобразователей и других инструментов.

Уязвимость к ошибкам и повреждениям. В случае ошибки при чтении или записи бинарного файла может произойти частичная или полная потеря данных. Бинарные файлы более чувствительны к ошибкам в сравнении с текстовыми, где некорректная информация может быть обработана или проигнорирована без значительных последствий.

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

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

чем отличается работа с бинарными файлами, от работы с обычными .

Все Программы для Windows пишут, обычно, на C+ (высокоуровневый язык) или на Assembler`е (низкоуровневый язык) .

Файл оч. жёстко привязан к Файловой системе. Файлы создаются (генерируются) Программами.

Под бинарностью, обычно, подразумевают:
а) два положения ключа (открыто/закрыто) ;
б) способ цифровой записи сигнала (1/0);
в) два вида сигнала (да/нет) ;
г) уровень сигнала (есть/отсутсвует) .

Обычные файлы можно открыть по Расширению с помощью Программы, которая может понять эти Расширения.

Бинарный код это машинный язык. Чтобы отличить где начало, а где конец Файла используют Стартовый и Стоповый биты.

Бинарный код состоит из битов информации. Это единицы и нули. Биты складываются в байты. Байты в свою очередь делятся на Старшие Байты и Младшие Байты.

Для обычных Файлов составляют n-разрядные символы. И тело Файла формируют из набора таких символов. Формирование символов производится в совокупной работе Программы и Операционной системы. Иногда, при передаче по Сетевому кабелю, по телефонным проводам, по ВЧ-выделенной линии часть информации может потеряться. Тогда применяют перекодировку передаваемых символов.

Существуют различные кодировки типа MIME, UUE, XXE, BinHex, SFV, MD5. Они позволяют упростить (убрать n-разрядность) передаваемую информацию по Сети, через Интернет. Однако, скорость передачи Файла заметно снижается из-за того, что при таких способах перекодирования будет возрастать объём передаваемой информации.

Есть какой-то Файл, с Расширением *.bin, но он, вообще-то, обычный Архив.

Чтобы интерпретировать обычные символы можно воспользоваться Калькулятором. Но, он работает только с числами. В Реестре есть встроенный интерпретатор, который позволяет переводить обычные n-разрядные символы в Hex-числа (в шестнадцетиричную систему счисления) . А Калькулятор может перевести Hex-числа в бинарный вид.

В общем, чтобы работать с бинарным кодом нужно иметь специальную программу, которая произведёт эти два вычисления, и сможет записать на Диск информацию, т. е. сгенерирует Файл.

А как выглядят бинарные Файлы, даже не представляю. Наверное, если откроешь с помощью Блокнота, там будут сплошные Крякозябы (нечитабельные символы).

работа с бинарными отличается тем что ты записываешь информацию в них не текстом как в текстовый тип а записываешь последовательности байтов. впринципе записать в них можно хоть че — даже просто обычный текст, но предворительно надо будет перекодировать весь текст в массив байтов. Про калькулятор советую забыть — ничего он не даст — просто переведешь числа из 16-ричной системы в десятичную от 0 до 255. В среде программирования Visual Studio не надо кст ничего переводить — читаешь из такого файла он те сам переводит (что я и делаю).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *