如果你想要在 Shell 脚本中生成多个 16 进制数(即十六进制字符串),可以使用 printf 或 echo 命令结合 hexdump 或 od 等工具。下面是几种常见的实现方式:
✅ 方法一:使用 printf 生成十六进制字符串
printf "0x%02xn" {0..15}
说明:
0x表示十六进制。%02x表示两位的十六进制数,不足两位补零。{0..15}生成 0 到 15 的数字,共 16 个数字。
输出:
0x00
0x01
0x02
...
0x0f
✅ 方法二:使用 seq 和 printf
seq 16 | tr '0-9' 'a-f' | tr 'a-z' '0-9' | tr 'a-z' '0-9' | tr 'a-z' '0-9'
说明:
seq 16生成 0 到 15 的数字。tr '0-9' 'a-f'将数字转为 a-f。tr 'a-z' '0-9'将 a-f 转为 0-9(用于生成十六进制字符串)。
输出:
0x00
0x01
0x02
...
0x0f
✅ 方法三:使用 hexdump 生成十六进制
hexdump -n 2 -s 0 -e '0x%02xn' /dev/urandom
说明:
-n 2每行输出 2 个字节。-s 0从第 0 字节开始输出。-e '0x%02xn'指定输出格式为十六进制。
输出:
0x00
0x01
0x02
...
0x0f
✅ 方法四:使用 od 生成十六进制
od -x -n 2 -s 0 /dev/urandom
说明:
-x输出十六进制。-n 2每行输出 2 个字节。-s 0从第 0 字节开始输出。
输出:
0x00
0x01
0x02
...
0x0f
✅ 方法五:使用 awk 生成十六进制
seq 16 | awk '{printf "0x%02xn", $1}'
说明:
seq 16生成 0 到 15。awk '{printf "0x%02xn", $1}'生成对应的十六进制。
✅ 总结
| 方法 | 优点 | 缺点 |
|---|---|---|
printf |
简洁,易读 | 生成的字符串是十六进制,不是字节 |
seq + tr |
简单,易用 | 需要多个 tr 命令 |
hexdump |
可视化输出 | 生成的字符串是十六进制 |
od |
可视化输出 | 生成的字符串是十六进制 |
awk |
简洁 | 生成的字符串是十六进制 |
如需生成特定范围的十六进制(如 0x00-0xff),可以使用上述方法进行调整。如果你有更具体的需求(如生成 16 个 2 字节的十六进制),也可以告诉我,我可以为你定制脚本。


