O comando padrão (POSIX / Unix) para obter os valores de byte como números hexadecimais é od
.
file=foo.mp3
printf %s "$file" | od -An -vtx1
O que dá uma saída semelhante a:
66 6f 6f 2e 6d 70 33
$file
acima contém uma matriz arbitrária de (não-NUL para shells diferentes de zsh
) bytes . A codificação de caracteres não entra em consideração.
Se você quiser que $file
contenha uma matriz de caracteres (portanto, na codificação da localidade) e deseja obter os pontos de código Unicode para cada um deles como números hexadecimais, em um Little- Sistema Endian, você poderia fazer:
printf %s "$file" | iconv -t UTF-32LE | od -An -vtx4
Veja também:
printf %s "$file" | recode ..dump
Ou:
printf %s "$file" | uconv -x hex/unicode
printf %s "$file" | uconv -x '([:Any:])>&hex/unicode($1)\n'
Se você quisesse os valores de bytes como números hexadecimais da codificação UTF-8 desses caracteres:
printf %s "$file" | iconv -t UTF-8 | od -An -vtx1
Para algo como foo.mp3
que contém apenas caracteres ASCII, todos serão equivalentes.