@Stanislaw11

Где можно почитать о бинарных данных и 16-ричных дампах?

Здравствуйте. Меня интересует работа с содержимым бинарных файлов. Я знаю, что есть хекс редакторы, но они выдают дампы 16-ричные. А где про них можно почитать? Как понять, какой байт что означает ? И как самому создавать такие файлы ?
  • Вопрос задан
  • 666 просмотров
Решения вопроса 1
valerium
@valerium
Изобретая велосипед
Вопрос исключительно общий. Начните с изучения самых основ, со способов представления информации и с систем счисления.

Вообще, если говорить о целых числах, то нет никакой разницы между числами, записанными в двоичный, десятичной, шестнадцати- и шестидесятиричной системе счисления. Конкретно 16-ричная система в компьютерном мире пользуется популярность, потому что позволяет для записи числа использовать количество символов, кратное количеству символов в двоичной записи. Такой компромисс между краткостью и наглядностью. Например, для записи одного байта можно использовать 8 двоичных символов, четыре восьмеричных, три десятичных (при этом только три варианта в старшем разряде) или два шестнадцатеричных.

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

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

Ручное создание бинарных файлов — это исключительно редкая ситуация в наше время. С файлами данных это и так очевидно (существуют редакторы на любой вкус и цвет). С исполняемыми файлами это тоже редко, так как существуют языки программирования высокого уровня, которые похожи на человеческий язык и переводятся в двоичные файлы компиляторами. Только в ряде особых случаев пишут на том самом ассемблере, который очень близок к машинным кодам и даёт возможность программисту практически однозначно определить содержимое итогового исполняемого файла.

А чтобы узнать, какая команда ассемблера какому машинному коду соответствует, нужно читать спецификацию конкретной процессорной архитектуры.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@GDApsy
программирование на python;linux
Любой файл он последовательность нулей и единиц в конечном итоге, хотя и удобно на более прикладном уровне разделять так называемые текстовые файлы(ASCII и Unicode) и бинарные, то есть то что простым текстом не является. Вам надо с оной стороны прочитать про единицы измерения информации, системы счисления по основанию 2, 8, 16, а кроме того понимать суть тех программ и форматов, которые создают тот или иной файл. А универсальноое чтиво, которое объяснит смысл любого файла на свете просто нет.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
Бинарные данные - это все, что не plain text (то есть обычный текст).
Картинки, видео, архивы, программы - это все бинарные данные.
Суть бинарных данных в том, что их нужно смотреть специальными программами, которая понимает этот формат. Поэтому, например, вордом нельзя открыть mp3 файл - он знает формат других файлов, а не звуков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы