我有一个具有十六进制值的变量:在本例中,一个值为 0xfe 的字节:
echo $MYVAR | hexdump
0000000 0afe
0000002
我想在我的 bash 脚本中使用这个值,特别是我需要:
用作字符串(echo X$MYVAR 应该给我 Xfe)
增加它,(0xff)
转换回原始格式(我需要保存增量值以供将来使用)
如果我将其转换为整数格式也许会更容易?
编辑:这是我初始化变量的方法:
printf "\xfe" | dd bs=1 of=tempfile seek=8001
MYVAR=`dd if=tempfile skip=8001 count=1 bs=1`
要将十六进制数字打印为字符串,您可以
printf 0x%X $MYVAR
例如,要增加它并以十六进制打印回来,您可以这样做
printf 0x%X `echo $(( 0xfe + 1 ))`
对于“转换回”原始格式,我认为您的意思是保留整数值,在这种情况下您可以简单地使用$MYVAR
无需格式转换。
希望这可以帮助,
问候。
EDIT :
为了跟随您的问题编辑,我将在下面添加我的答案。
您可以这样设置 MYVAR:
read dummy MYVAR <<EOF
`dd if=tempfile skip=8001 count=1 bs=1|od -x`
EOF
现在您已从存储在 MYVALUE 中的文件读取的字节的十六进制值。
您现在可以直接打印echo
, printf
管他呢。
$ echo $MYVAR
00fe
您可以按照前面所述对其进行数学计算:
$ printf %X $((0x$MYVAR + 1))
FF
(感谢 fedorqui 提供的最短版本)
Regards.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)