
$ echo "hello" | od
0000000 062550 066154 005157
0000006
Ich weiß, dass die erste Spalte den Byte-Offset darstellt. Aber ich sehe nicht, wie die anderen Zahlen gebildet werden. Laut man
dem obigen sollte es „Oktalbytes“ sein. Die Option -b
soll jedoch auch „Oktalbytes auswählen“ und gibt etwas anderes aus:
$echo "hello" | od -b
0000000 150 145 154 154 157 012
0000006
BEARBEITEN: Dies ist übrigens das, was ich erwarten würde, d. h. die ASCII-Werte aller Zeichen in „hello\n“ als das, was ich als „Oktalbytes“ erwarten würde.
Antwort1
od
zeigt standardmäßig keine Bytes an, sondern Wörter in Oktal. Das ist vielleicht nicht ganz intuitiv, aber vergessen Sie nicht, od
es ist einsehralter Befehl :-) Ich verwende ein etwas einfacheres Beispiel als Sie:
$ echo -en '\01\02' | od
0000000 001001
0000002
Da Intel eineLittle-Endian-Übersetzungdie Architektur, die Bytes \01\02
werden 00000010 00000001
binär interpretiert.
Da Oktalziffern jeweils 3 Bits darstellen, können wir diese Zahl folgendermaßen gruppieren:
(0)(000)(001)(000)(000)(001)
Die Oktaldarstellung dieser 2 Bytes lautet also:
001001
Für den alltäglichen Gebrauch ist dies ziemlich nutzlos; vielleicht war es früher praktisch, um Speicherauszüge manuell zu debuggen :-)
Ihr hello\n
Beispiel ist:
h = 01101000
e = 01100101
l = 01101100
l = 01101100
o = 01101111
\n= 00001010
Jetzt ist es etwas komplizierter, da Oktalziffern 3 Bits darstellen, Bytes jedoch 8 Bits sind. Daher wird eine Auffüllung hinzugefügt :-( Das Ergebnis ist symbolisch:
PehPllP\no
Denken Sie daran, dass jeder Satz von 2 Bytes aufgrund der Bytereihenfolge vertauscht wird.Pist eine Auffüllung von 2 Bits. Das Ergebnis in Oktal ist (mit einem Schrägstrich als Trennzeichen):
00/01100101/01101000/00/01101100/01101100/00/00001010/01101111
Jetzt in Oktalgruppen zu je 3 Bits:
000 110 010 101 101 000 000 110 110 001 101 100 000 000 101 001 101 111
In Oktalziffern übersetzt:
062550066154005157
Dies entspricht Ihrem Ergebnis.
Zusammenfassend haben Sie wahrscheinlich gelernt, dass od
es schlimmer als nutzlos ist, keine Optionen zu haben :-)