Domanda
sto giocando con l'utilità hexdump unix. Il mio file di input è codifica UTF-8, che contiene un singolo ñ
carattere, che è C3 B1
in esadecimale UTF-8.
hexdump test.txt
0000000 b1c3
0000002
Eh? Questa mostra B1 C3
- l'inverso di quello che mi aspettavo! Qualcuno può spiegare?
Per ottenere i risultati attesi che faccio:
hexdump -C test.txt
00000000 c3 b1 |..|
00000002
Stavo pensando capisco sistemi di codifica ..
Soluzione
Questo è dovuto al fatto default Hexdump all'utilizzo di parole di 16 bit e si esegue su un little-endian architettura. Il b1 c3
sequenza di byte viene così interpretata come parola esadecimale c3b1
. Le forze opzione -C
hexdump di lavoro con i byte invece di parole.
Altri suggerimenti
Ho trovato due modi per evitare che:
hexdump -C file
o
od -tx1 < file
Penso che sia stupido che hexdump ha deciso che i file sono di solito a 16 bit parola little endian. Molto confuso IMO.