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

Было очень сложно работать с командой hexdump в Linux. В основном я пытаюсь получить вывод из /proc/device-tree. Я пытался использовать шестнадцатеричный дамп, но в итоге запутался. Мой dts содержит

vvn = <0 0 2 2 0 0>;

У меня есть узел proc в /proc/device-tree.

Я попробовал следующую команду.

hexdump -v  -e '4/1 "%x" " "' vvn ; echo
0000 0000 0002 0002 0000 0000

hexdump -v  -e '1/4 "%x" " "' vvn ; echo
0 0 2000000 2000000 0 0 

hexdump -v  -e '4/1 "%x "' vvn ; echo
0 0 0 00 0 0 00 0 0 20 0 0 20 0 0 00 0 0 0

У меня другой результат, я думал, что все будут давать одинаковый результат. Может ли кто-нибудь объяснить мне, как использовать количество итераций и количество байтов шестнадцатеричного дампа, для чего это нужно и как использовать формат?


person AQU    schedule 04.05.2016    source источник


Ответы (1)


Счетчик итераций определяет, сколько раз формат будет повторяться.

Количество байтов указывает, сколько байтов будет отформатировано для каждой итерации.

Строка формата такая же, как у printf.

'4/1 "%x" " "': итерация 4 раза: каждый раз форматируйте 1 байт с помощью «%x», а когда итерация завершится, вставьте " ".

'1/4 "%x" " "': итерация за 1 раз: каждый раз форматируйте 4 байта с помощью «%x», а когда итерация завершится, вставьте " ". Это равно '1/4 "%x "'

'4/1 "%x "': итерация 4 раза: каждый раз форматировать 1 байт с помощью "%x"; по завершении итерации съедает последний пробел, ничего не вставляя.

Я знаю, почему hexdump съедает последний пробел :(.

person TerrenceSun    schedule 26.09.2016
comment
прекрасное объяснение. Я тоже не знаю, почему он ест последнее место. - person AQU; 27.09.2016