我现在是这样做的:
[root@~]# echo Aa|hexdump -v
0000000 6141 000a
0000003
[root@~]# echo -e "\x41\x41\x41\x41"
AAAA
但它的行为并不完全如我所愿,
Aa
的十六进制形式应该是4161
,但输出是6141 000a
,这似乎没有意义。
当对 ascii 执行十六进制时,是否有另一个实用程序,这样我就不需要前缀 \x
了?
最佳答案
原因是因为 hexdump
默认打印出 16 位整数,而不是字节。如果您的系统有它们,hd
(或 hexdump -C
)或 xxd
将提供不太令人惊讶的输出 - 如果没有,od - t x1
是获取逐字节十六进制输出的 POSIX 标准方法。您可以使用 od -t x1c
来显示字节的十六进制值和相应的字母。
如果你有 xxd
(vim 附带),你可以使用 xxd -r
从十六进制(从相同的格式 xxd
产生)。如果你只有纯十六进制(只有 '4161',由 xxd -p
生成)你可以使用 xxd -r -p
转换回来。
关于bash - 在 bash 中进行 Ascii/Hex 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724761/