Интерпретация восьмеричного дампа без опций

Интерпретация восьмеричного дампа без опций
$ echo "hello" | od
0000000 062550 066154 005157
0000006

Я знаю, что первый столбец представляет смещение байта. Но я не вижу, как формируются другие числа. Согласно manвышесказанному, должно быть "octal bytes". Однако опция -bдолжна также "select octal bytes", и она печатает что-то другое:

$echo "hello" | od -b
0000000 150 145 154 154 157 012
0000006

EDIT: Кстати, это то, что я ожидаю увидеть, т. е. значения ascii всех символов в «hello\n» в виде того, что я ожидаю назвать «восьмеричными байтами».

решение1

odне показывает байты по умолчанию, он показывает слова в восьмеричном формате. Это может быть не совсем интуитивно, но не забывайте, odчто этооченьстарая команда :-) Я буду использовать пример попроще, чем вы:

$ echo -en '\01\02' | od
0000000 001001
0000002

Поскольку Intel используетпрямой порядок байтовархитектура, байты \01\02интерпретируются как 00000010 00000001двоичные.

Поскольку каждая восьмеричная цифра представляет собой 3 бита, мы можем сгруппировать это число следующим образом:

(0)(000)(001)(000)(000)(001)

Итак, восьмеричное представление этих двух байтов следующее:

001001

Для повседневного использования это довольно бесполезно; возможно, когда-то это было удобно для ручной отладки дампов памяти :-)

Ваш hello\nпример:

h = 01101000
e = 01100101
l = 01101100
l = 01101100
o = 01101111
\n= 00001010

Теперь все немного сложнее, потому что восьмеричные цифры представляют 3 бита, а байты — 8 бит; поэтому добавляется заполнение :-( Результат символически выглядит так:

PehPllP\no

Помните, что каждый набор из 2 байтов меняет местами из-за порядка байтов.пявляется дополнением 2 битами. Результат в восьмеричном виде (используя косую черту в качестве разделителя):

00/01100101/01101000/00/01101100/01101100/00/00001010/01101111

Теперь в восьмеричных группах по 3 бита:

000 110 010 101 101 000 000 110 110 001 101 100 000 000 101 001 101 111

Перевод в восьмеричные цифры:

062550066154005157

Это соответствует вашему результату.

В заключение вы, вероятно, поняли, что odотсутствие вариантов хуже, чем бесполезность :-)

Связанный контент