Te polecenia robią bardzo podobne rzeczy: wyświetlają tekstową reprezentację pliku binarnego, używając notacji ósemkowej, dziesiętnej lub szesnastkowej. Nie ma zasadniczej różnicy między nimi.
Mają wiele opcji sterowania formatem wyjściowym, a niektóre formaty można uzyskać tylko za pomocą jednego lub drugiego polecenia. W szczególności, aby zobaczyć rzut oka na zawartość pliku binarnego, podoba mi się hdformat wyjściowy, z kolumną po prawej stronie pokazującą dosłownie znaki do wydrukowania; odnie mogę tego zrobić.
$ od /bin/sh | head -n 2 # od default: octal, 2-byte words
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 170020 000101 000000 000000
$ od -Ax -t x1 /bin/sh | head -n 2 # od showing bytes in hexadecimal
000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00
$ hd /bin/sh | head -n 2 # hd default output: nice
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 10 f0 41 00 00 00 00 00 |..>.......A.....|
Dzięki! Czy w liczbach ósemkowych przez od cyfra oznacza trzy bity? Na przykład 04257718 bitów, czyli 9/4 bajtów?
Tim
@Tim Tak, ósemkowe oznacza , że każda cyfra odpowiada 3 bitom (i szesnastkowym , 4 bitom). 042577 faktycznie reprezentuje 16 bitów (2 bajty); pierwsza cyfra w bloku w tym formacie będzie zawsze miała wartość 0 lub 1. ósemkowa (042577) = szesnastkowa (7f45) = dziesiętna (32581).
Gilles „SO- przestań być zły”
Dzięki! Czytam z innych źródeł, że liczby ósemkowe zaczynają się od dodatkowego 0. Co to znaczy, gdy zaczyna się od 1?
Tim
@Tim W wielu językach programowania 123jest liczbą reprezentowaną w podstawie 10 (dziesiętnej), podczas gdy 0123oznacza, że liczba jest reprezentowana w podstawie 8 (ósemkowej), tj. 0123Wynosi 83. 0x123byłoby w podstawie 16 (szesnastkowej), tj. 291. To jest niezwiązane z odformatem wyjściowym.
Gilles „SO- przestań być zły”
Wiele? Powiedziałbym, że jakikolwiek C i pochodne - tak, rzeczywiście. Co jeszcze? Ile?
poige
5
W rzeczywistości odmogą wyświetlać zarówno znaki szesnastkowe / oct / dec, jak i znaki drukowalne:
xxd
też! : DOdpowiedzi:
hd
jest synonimemhexdump -C
na FreeBSD i na niektórych dystrybucjach Linuksa.hexdump
pochodzi z dni BSD ;od
jest od zarania dziejów . Tylkood
jest standaryzowany przez POSIX . Uzasadnienie dla pojedynczego systemu UNIX omawia, dlaczegood
wybrano zamiast preferencjihd
lubxd
.Te polecenia robią bardzo podobne rzeczy: wyświetlają tekstową reprezentację pliku binarnego, używając notacji ósemkowej, dziesiętnej lub szesnastkowej. Nie ma zasadniczej różnicy między nimi.
Mają wiele opcji sterowania formatem wyjściowym, a niektóre formaty można uzyskać tylko za pomocą jednego lub drugiego polecenia. W szczególności, aby zobaczyć rzut oka na zawartość pliku binarnego, podoba mi się
hd
format wyjściowy, z kolumną po prawej stronie pokazującą dosłownie znaki do wydrukowania;od
nie mogę tego zrobić.źródło
042577
18 bitów, czyli 9/4 bajtów?123
jest liczbą reprezentowaną w podstawie 10 (dziesiętnej), podczas gdy0123
oznacza, że liczba jest reprezentowana w podstawie 8 (ósemkowej), tj.0123
Wynosi 83.0x123
byłoby w podstawie 16 (szesnastkowej), tj. 291. To jest niezwiązane zod
formatem wyjściowym.W rzeczywistości
od
mogą wyświetlać zarówno znaki szesnastkowe / oct / dec, jak i znaki drukowalne:Główna różnica, jak sądzę, jest tylko historyczna. Również niektóre wersje
hd
mogą drukować w kolorze.źródło
od
nie obsługujez
przyrostka in-tx1z
hd
. Niemniej jednak przydatne, dziękuję :)