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 ..

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top