
echo hello | iconv -f ascii -t utf-16le | od -x
производит то, что мне кажется результатом с обратным порядком байтов
0068 0065 006c 006c 006f 000a
тогда как та же строка без le
производит, в системе utf16le (OS X)
echo hello | iconv -f ascii -t utf-16 | od -x
fffe 6800 6500 6c00 6c00 6f00 0a00
Меняется ли od -x
порядок байтов?
решение1
$ echo hello | iconv -f ascii -t utf-16le | hexdump -C
00000000 68 00 65 00 6c 00 6c 00 6f 00 0a 00 |h.e.l.l.o...|
$ echo hello | iconv -f ascii -t utf-16le | od -t x1
0000000 68 00 65 00 6c 00 6c 00 6f 00 0a 00
Вопрос в том, как 'od' обрабатывает порядок байтов. Когда вы просите его отобразитьединицы больше одного байта( -x
отображает 16-битные слова), по умолчанию будет использоваться то, что является родным для системы, на которой он запущен.
Ваша macOS, вероятно, работает на процессоре Intel x86_64 с прямым порядком байтов, что означает, что байты {0x68, 0x00}
действительно представляют собой 16-битное число 0x0068
, когда они декодируются функцией «od».