Interpretando o octal dump sem opções

2
$ echo "hello" | od
0000000 062550 066154 005157
0000006

Eu sei que a primeira coluna representa o deslocamento de bytes. Mas não vejo como os outros números são formados. De acordo com man , o acima deve ser "bytes octal". No entanto, a opção -b deve "selecionar octal bytes" e imprimir algo diferente:

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

EDIT: Isto é, a propósito, o que eu esperaria que apareça, ou seja, os valores ascii de todos os caracteres em 'hello \ n' como o que eu esperaria ser chamado de "bytes octal".

    
por user2820379 16.11.2014 / 01:25

1 resposta

2

od não exibe bytes por padrão, mostra palavras em octal. Isso pode não ser intuitivo, mas não se esqueça de od é um comando muito antigo :-) Vou usar um exemplo um pouco mais simples do que você:

$ echo -en '' | od
0000000 001001
0000002

Como a Intel usa uma arquitetura little-endian , os bytes são interpretados como 00000010 00000001 em binário.

Como os dígitos octais representam 3 bits, podemos agrupar esse número da seguinte forma:

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

Portanto, a representação octal desses 2 bytes é:

001001

Para o dia a dia, isso é bastante inútil; talvez no passado fosse útil depurar manualmente os despejos de memória: -)

Seu hello\n exemplo é:

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

É um pouco mais complicado agora, porque os dígitos octal representam 3 bits, mas os bytes são 8 bits; então padding é adicionado :-( O resultado simbólico é:

PehPllP\no

Lembre-se de que cada conjunto de 2 bytes é trocado devido ao endianness. O P é um preenchimento de 2 bits. O resultado em octal é (usando uma barra como separador):

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

Agora em grupos octal de 3 bits:

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

Traduzido para dígitos octal:

062550066154005157

Isso corresponde ao seu resultado.

Em conclusão, você provavelmente aprendeu que od sem opções é pior do que inútil: -)

    
por 17.11.2014 / 13:10

Tags