bash - 在 bash 中进行 Ascii/Hex 转换

标签 bash ascii hex

我现在是这样做的:

[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/

相关文章:

windows - 无法在git bash中输入字符

bash - 带有变量比较的 if 语句在 bash shell 中不起作用

linux - 在 Bash shell 中获取和使用带有特殊字符的密码

swift - 'scanHexInt32' 在 iOS 13.0 中被弃用

在一个字节中转换两个 ASCII 十六进制字符(两个 ASCII 字节)

javascript - Crypto.js 使用字节数组中的 key 和 iv(向量)解密

linux - 使用 AWK 打印除第一列之外的所有列

c - 在 C 中打印 ASCII

python 美丽汤 ascii 错误

c++ - 如何在 C++ 中读取一个字节并将字节的 ASCII 值保存为整数