В оболочке, как я могу прочитать байты имеющегося у меня двоичного файла и распечатать вывод в виде шестнадцатеричных чисел?
shell
text-processing
binary
Том Брито
источник
источник
Ответы:
использование
hexdump(1)
...
источник
od
. Существует также шестнадцатеричный редактор в стиле vihexer
.hexdump -e '"\\\x" /1 "%02x"' filename
10
, равного 16 в шестнадцатеричном формате. Двухбайтовое представление зависит от порядкового номера системы. Введитеman hexdump
для полной информации.Другой вариант od :
или
od
есть много вариантов тонкой настройки.источник
od -t x1
Я полагаю, что большинство людей находят предпочтительный формат.od -t test
я получилod: invalid character 't' in type string 'test'
--t
od --version od (GNU coreutils) 7.4
Пока мы находимся
od
и ещеhexdump
два похожих инструмента:Образец вывода:
Или, если вы хотите прочитать байты по одному и распечатать их в своем собственном формате, попробуйте что-то вроде:
Образец вывода:
источник
while
цикл не работает для символов обратной косой черты и новой строки (и в bash (в отличие от ksh93) для пустых символов), а также не будет работать должным образом в локалях utf8 для байтов с установленным 8-м битом. Кроме того, вам не нужно "od" там, вы можете использоватьprintf '%02x\n' "'$byte"
offset
это просто «фиктивная переменная»; это не имеет практического применения. Это просто используется в качестве заполнителя, чтобы добраться доhex
. Это то, что иногда отрицательно влияет на читабельностьread
: переменные появляются неожиданно.$offset
ограничена вложенной оболочкой, поэтому я не вижу в этом проблемы.Мои два цента:
Мне это нравится, потому что вы отслеживаете текущий буферный файл, когда можете видеть hexdump вживую. Не забывайте, что ВСЕ в Unix - это файл, и мы можем легко объединять такие команды, как
tail
иhexdump
для решения самых разных задач.источник
for((i=0;i<100;i++));do echo $i >>tst2.bin;sleep 1;done&
ним хорошо работает для мониторинга THX :)Полуночный командир - другой вариант. Я не знаю, доступно ли это для всех версий Unix. Возможно, вам придется скачать его в первую очередь.
F3 F4для просмотра во внутреннем редакторе / в шестнадцатеричном режиме.
источник
Я использую od с c и x1, когда мне нужно искать текст внутри двоичного файла:
источник