Kornシェルでテキストまたは文字を16進数に変換する方法

Kornシェルでテキストまたは文字を16進数に変換する方法

unix kornシェルはテキストまたは文字を16進数に変換する機能を提供しますか? Hex 31 32 37 33 34 35 35 36 36 37 文字値 1273455667 ここに表示するコードを書きましたが、結果を変数に保存する方法がわかりません。

str=1273455667

for (( i=0; i < ${#str}; i++ ))
do
c=${str:$i:1}
if [[ $c == ' ' ]]
then
printf "[%s] %X\n" " " \'\ \'
else
printf "[%s] %X\n" "$c" \'$c\'
fi
done

ベストアンサー1

(可能性が高い場合hexdump)次のようにできます。

$ echo "Hello, world!" | hexdump -v -e '/1 "[%_c]: "' -e '/1 "%02X\n"'
[H]: 48
[e]: 65
[l]: 6C
[l]: 6C
[o]: 6F
[,]: 2C
[ ]: 20
[w]: 77
[o]: 6F
[r]: 72
[l]: 6C
[d]: 64
[!]: 21
[\n]: 0A

単純なスペースで区切られた16進数を変数にダンプするには、次のようにします。

$ v=$(printf %s 1273455667 | hexdump -v -e '/1 "%02X "')
$ echo "$v"
31 32 37 33 34 35 35 36 36 37

おすすめ記事