我有一个十六进制值的变量:在这个例子中,一个值为0xfe的字节:
echo $MYVAR | hexdump
0000000 0afe
0000002
我想在我的bash脚本上使用这个值,特别是我需要:
也许如果我将其转换为整数格式会更容易?
编辑:这是我如何初始化var:
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
而不进行格式转换。
希望这可以帮助, 问候。
编辑: 要关注您的问题编辑,我将在下面添加我的答案。
你可以用这种方式设置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最短的版本)
问候。