次の値を持つ非常に長いファイルがあります。
0030..0039
2194..2199
21A9..21AA
231A..231B
23E9..23F3
23F8..23FA
25AA..25AB
16進数を10進形式に変換したいです。はい読む使用できますが、$(($HEX))
返される各番号に上記のファイルを適用します。
$((0039))
bash: 0039: value too great for base (error token is "0039")
$(39)
ここで正確に何が間違っているのか、このメッセージは他のエラーを読むのではなく、私が何をしたいのかを知っていると思います。しかし、この数値は高すぎるという。
奇妙なエラーメッセージのようです。誰でも説明できますか?
ベストアンサー1
0で始まる数字は8進数と見なされます。
8進数は0〜7の範囲でなければなりません(8または9ではありません)。
従って9インチは0039
「ベースと比較して余りに大きい価値」である。
ただし、これは機能します(0039が16進数であると仮定)。
$ echo $((0x0039))
57
数値を変換するには:
$ number=0039
$ printf 'octal=%o decimal=%d hexadecimal=%x\n' "$((0x$number))"{,,}
octal=71 decimal=57 hexadecimal=39