Различные люди ответили на некоторые аспекты запроса, но не на все.
Все файлы на компьютерах хранятся как 1 и 0. Изображения, текстовые файлы, музыка, исполняемые приложения, объектные файлы и т. Д.
Все они 0 и 1. Разница лишь в том, что они интерпретируются по-разному в зависимости от того, что их открывает.
Когда вы просматриваете текстовый файл, используя cat
, исполняемый файл ( cat
в данном случае) читает все 1 и 0 и представляет их вам, преобразовывая их в символы из вашего соответствующего алфавита или языка.
Когда вы просматриваете файл, используя программу просмотра изображений, он берет все 1 и 0 и превращает их в изображение, в зависимости от формата файла и некоторой логики, чтобы решить все это.
Скомпилированные бинарные файлы ничем не отличаются, они хранятся как 1 и 0.
Ответ arzyfex дает вам инструменты для просмотра этих файлов по-разному, но чтение файла в двоичном формате работает для любого файла на компьютере, так же как и просмотр его как восьмеричного, или шестнадцатеричного, или даже ASCII, просто не может иметь смысла в каждом из этих форматов.
Если вы хотите понять, что делает исполняемый двоичный файл, вам нужно просмотреть его таким образом, чтобы он показал вам язык ассемблера (как начало), который вы можете сделать, используя:
objdump -d /path/to/binary
который является дизассемблером, он берет двоичный контент и преобразует его обратно в ассемблер (который является языком программирования очень низкого уровня). objdump
не всегда устанавливается по умолчанию, поэтому может потребоваться установка в зависимости от вашей среды Linux.
Некоторое внешнее чтение.
NB: как указывает @Wildcard, важно отметить, что файлы не содержат символов 1 и 0 (как вы видите их на экране), они содержат фактические числовые данные, отдельные биты информации, которые либо включены (1) или выключено (0). Даже это описание является лишь приближением к истине. Ключевым моментом является то, что если вы найдете средство просмотра, которое показывает вам 1 и 0, даже если оно все еще интерпретирует данные из файла, а затем показывает символы ASCII для 0 и 1. Данные хранятся в двоичном формате ( см. ссылку на двоичный номер выше). В вики-записи сообщества Пьера-Оливье эта тема описана более подробно.