如何在外壳脚本中将十进制值打印为十六进制值



我有一个要求有一个具有十进制值的字符串。例如,"0 2930 0"。现在,当我将其转换为十六进制时,它应该说'0000 0B72 0000'。我能够使用 split 将值转换为十六进制,使用 bc 将 obase=16 转换为十六进制,我会得到答案为"0 B72 0"。我需要的是获取值"0000 0B72 0000"。谁能帮忙阐明这一点?

这是我所做的:

s1 ='2930'
echo after converting it to hexadecimal
s=`echo "obase=16; $s1" |bc`
echo $s

使用 printf 获取所需格式的输出:

$ printf "%04x " 0 2930 0
0000 0b72 0000

使用 bc 作为你所拥有的,

WANTED=456  ; echo "obase=16 ;$WANTED"|bc

和倍数

WANTED="{456 ;12 ;32000}"  ; echo "obase=16 ;$WANTED"|bc

最新更新