Как вывести первые 10 байтов в шестнадцатеричном формате файла?

Ответы:

11

Я пришел сюда, увидев три ответа, думая, что мне нечего добавить, и что это будет упражнение в том, как много людей могут опубликовать один и тот же вкладыш в первую минуту задаваемого вопроса. Но я нахожу людей, использующих какой-то новый hexdumpинструмент. Эта команда является способом более 2 букв; это намекает на некоторую базу, отличную от The One True Base (база 8); и из его названия даже видно, что он делает. Очевидно, что это не путь Unix.

Так вот и радость od("восьмеричная свалка").

Первый GNU, как вы найдете на вашем Linux Mint:

od --format=x1 --read-bytes=10 foo

Теперь BSD, где ирония в том, что на самом деле это та же программа, что и hexdump:

od -t x1 -N 10 foo
JdeBP
источник
1
Я порезал зубы на 8-битных микропроцессорах, где все было сделано в шестнадцатеричном формате. Так что для меня единственное истинное основание - 16. Я использовал Unix примерно с 84-го года, и одна вещь, которую я всегда и всегда ненавидел, это его фиксация с восьмеричным: я не выношу восьмеричное с его 3-битной кодировкой который не будет плавно расширяться от одного до нескольких байтов. И восьмеричные целочисленные литералы в C и других языках - крушение поезда, которое до сих пор наносит ущерб. (+1, кстати)
Адриан Пронк
11

Вариант -l len | -len lenдля: остановить после записи <len>октетов.

Используйте это с файлом как это:

xxd -l 10 file

или

hexdump -C -n 10 file

где -n lenто же самое, что и -lопция из xxd.

Erik
источник
5

Вы можете использовать xxdдля этого.

$ xxd -ps -l 10 FILENAME
546865204d4954204c69

Это печатает первые 10 байт ( -l 10) FILENAMEв простом шестнадцатеричном формате ( -ps).

Даниэль Бек
источник