stringtranslate.com

Двоичный файл

Шестнадцатеричный дамп 318 -байтового фавикона Википедии , или . Первый столбец нумерует начальный адрес строки, а *указывает на повторение.

Двоичный файл — это компьютерный файл , который не является текстовым файлом . [1] Термин «двоичный файл» часто используется как термин, означающий «нетекстовый файл». [2] Многие форматы двоичных файлов содержат части, которые можно интерпретировать как текст; например, некоторые файлы компьютерных документов, содержащие форматированный текст , такие как старые файлы документов Microsoft Word , содержат текст документа, но также содержат информацию о форматировании в двоичной форме. [2]

Структура

Двоичные файлы обычно рассматриваются как последовательность байтов , что означает, что двоичные цифры ( биты ) сгруппированы по восьмеркам. Двоичные файлы обычно содержат байты, которые предназначены для интерпретации как нечто иное, чем текстовые символы . Типичными примерами являются скомпилированные компьютерные программы; действительно, скомпилированные приложения иногда называют, особенно программисты, двоичными файлами . Но двоичные файлы также могут означать, что они содержат изображения, звуки, сжатые версии других файлов и т. д. — короче говоря, любой тип содержимого файла. [1]

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

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

Манипуляция

Чтобы отправить двоичные файлы через определенные системы (например, электронную почту ), которые не допускают все значения данных, их часто переводят в простое текстовое представление (например, с использованием Base64 ). Кодирование данных имеет недостаток, заключающийся в увеличении размера файла во время передачи (например, использование Base64 увеличит размер файла примерно на 30%), а также в необходимости обратного перевода в двоичный формат после получения. Увеличенный размер может быть компенсирован сжатием ссылок более низкого уровня, поскольку полученные текстовые данные будут иметь примерно столько же меньше энтропии, сколько и увеличенный размер, поэтому фактические данные, переданные в этом сценарии, вероятно, будут очень близки к размеру исходных двоичных данных. Подробнее об этом см. в разделе Кодирование двоичных данных в текст .

Microsoft Windows и ее стандартные библиотеки для языков программирования C и C++ позволяют программисту указать параметр, указывающий, ожидается ли файл в виде обычного текста или двоичного файла при открытии файла; это влияет на вызовы стандартной библиотеки для чтения и записи из файла, поскольку система преобразует между символом "конца строки" C/C++ (символ перевода строки ASCII) и последовательностью конца строки, которую Windows ожидает в файлах ( символы возврата каретки и перевода строки ASCII в последовательности). В Unix-подобных системах стандартные библиотеки C и C++ в этих системах также позволяют программисту указать, ожидается ли файл в виде текста или двоичного файла, но библиотеки могут игнорировать и игнорируют этот параметр, поскольку последовательность конца строки в Unix-подобных системах — это просто символ конца строки C/C++.

Просмотр

Шестнадцатеричный редактор или просмотрщик можно использовать для просмотра данных файла в виде последовательности шестнадцатеричных (или десятичных, двоичных или ASCII-символьных) значений для соответствующих байтов двоичного файла. [2]

Если двоичный файл открыт в текстовом редакторе , каждая группа из восьми бит обычно будет переведена как один символ, и пользователь увидит (вероятно, непонятное) отображение текстовых символов. Если файл открыт в каком-то другом приложении, то это приложение будет иметь свое собственное применение для каждого байта: возможно, приложение будет обрабатывать каждый байт как число и выводить поток чисел от 0 до 255 — или, может быть, интерпретировать числа в байтах как цвета и отображать соответствующее изображение. Другие типы просмотрщиков (называемые «извлекателями слов») просто заменяют непечатаемые символы пробелами, открывая только читаемый человеком текст. Этот тип просмотра полезен для быстрой проверки двоичного файла с целью поиска паролей в играх, поиска скрытого текста в нетекстовых файлах и восстановления поврежденных документов. [2] Его даже можно использовать для проверки подозрительных файлов (программного обеспечения) на предмет нежелательных эффектов. Например, пользователь увидит любой URL/адрес электронной почты, к которому подозреваемое программное обеспечение может попытаться подключиться, чтобы загрузить несанкционированные данные (для кражи). Если файл рассматривается как исполняемый и запускается, то операционная система попытается интерпретировать файл как последовательность инструкций на своем машинном языке .

Интерпретация

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

Двоичная совместимость

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

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

Одной из возможных проблем бинарной совместимости между различными компьютерами является порядок байтов компьютера. Некоторые компьютеры хранят байты в файле в другом порядке. [3]

Смотрите также

Ссылки

  1. ^ ab "Определение двоичного файла от Linux Information Project (LINFO)". www.linfo.org . Получено 2017-10-12 .
  2. ^ abcd "Ascii против двоичных файлов". www.cs.umd.edu . Получено 12 октября 2017 г.
  3. ^ "NCL: Чтение двоичных данных". www.ncl.ucar.edu . Архивировано из оригинала 2017-10-12 . Получено 2017-10-12 .

Внешние ссылки