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

时间:2014-01-16 12:15:20

标签: shell

我要求有一个带小数值的字符串。例如,' 0 2930 0'。现在,当我将其转换为十六进制时,它应该说&00; 0000 0B72 0000'我可以使用split和obase = 16将值转换为十六进制,使用bc,我将得到答案为' 0 B72 0'。我需要的是获得价值&00; 0000 0B72 0000'。任何人都可以帮忙解释一下吗?

以下是我所做的:

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

使用bc,

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

和倍数

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