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

4
我有一个需求,需要一个包含小数值的字符串。例如,'0 2930 0'。现在,当我将其转换为十六进制时,它应该显示为'0000 0B72 0000'。我已经使用split和obase=16与bc将值转换为十六进制,我得到的答案是'0 B72 0'。我需要的是获取值'0000 0B72 0000'。有人能帮忙解决这个问题吗?
以下是我的尝试:
s1 ='2930'
echo after converting it to hexadecimal
s=`echo "obase=16; $s1" |bc`
echo $s
2个回答

5

使用printf以期望的格式获取输出:

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

谢谢,它正在工作。但现在,如果我想在其中进行字节翻转...比如字符串现在是'00000b720000',我想要的输出是'0000 720b 0000'。请帮帮我。 - user3202415
1
@user3202415,您能否请发一个新的问题呢? - devnull

2

根据您的使用情况,使用bc命令时,

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

和倍数

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接