私は問題があります。各数値を正確に2桁で表す必要があります(つまり、Fではなく0F)
私のコードは次のように
なります。1。環境変数にあるASCII文字の読み取り数(wc -wを使用)
2。この数を16進数に変換(bcを使用)。
ステージ2の後に取得する数値に先行ゼロが含まれるようにするにはどうすればよいですか(必要な場合)
ありがとう、Amigal
実行しますprintf
:
$ printf "%02s" 0xf
0f
変数にのみ数字の数字がある場合、たとえば$NUMBER
、必要な0x
プレフィックスと直接連結できます。
$ NUMBER=fea
$ printf "%04x" 0x$NUMBER
0fea
の変換部分をスキップして、次のコマンドbc
で10進数を変換します。printf
#num=$(... | wc -w)
num=12 # for testing
printf "%02x" $num
0c
他の理由で16進数に変換する必要がある場合は、0x
プレフィックスを使用しprintf
て、数値がすでに16進数であることを示します。
#num=$(... | wc -w | bc ...)
num=c # as obtained from bc
printf "%02x" 0x$num
0c
formatは%x
、数値を16進数としてフォーマットすることを%2x
要求し、2文字の幅にパディングすることを%02x
要求し、具体的には、必要な先行ゼロを使用したパディングを要求します。可能なフォーマット文字列の詳細については、printf
マニュアル(man printf
または)を参照してください。info coreutils printf