显示文件的十六进制数
我想构建一个 bash 程序,它可以读取文件(例如 *.bin)并打印其所有十六进制数字,就像“十六进制”编辑器所做的那样。我可以从哪里开始?
I want to build a bash program that can read a file, like a *.bin and print all its hexadecimal numbers, as 'hex' editors do. Where I can start?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 od 命令:
示例输出:
Use the
od
command:Sample output:
编辑:添加了“字节流”功能。如果脚本名称包含单词“stream”(例如,它是一个符号链接,例如
ln -s bash-hexdump bash-hexdump-stream
并作为./bash-hexdump-stream
运行code>),它将输出代表文件内容的连续的十六进制字符流。否则,其输出将类似于hexdump -C
。由于 Bash 并不擅长二进制,因此需要使用一堆技巧:
撇号技巧已记录在案
以下是脚本的一些输出,显示了我的
/bin/bash
的前几行以及其他几行:Edit: Added "bytestream" functionality. If the script name contains the word "stream" (e.g. it's a symlink such as
ln -s bash-hexdump bash-hexdump-stream
and run as./bash-hexdump-stream
), it will output a continuous stream of hex characters representing the contents of the file. Otherwise its output will look likehexdump -C
.It takes a bunch of trickery since Bash isn't really good at binary:
The apostrophe trick is documented here. The relevant part says:
Here is some output from the script showing the first few lines of my
/bin/bash
plus a few more:你可以用od。 “od -x file” 为什么要重新发明那个轮子?
You could use od. "od -x file" Why reinvent that wheel?
如果有的话也可以使用 hexdump
you can also use hexdump if you have it
获取不带任何格式的原始十六进制字节字符串
当您想要转换数据而不是手动查看数据时,此形式也很有用:
示例:
输出:
因此没有空格或换行符,只有十六进制。
在 Ubuntu 23.04 上测试。
相关:如何在 bash 中创建仅包含十六进制字符而没有空格的文件的十六进制转储?
Get raw hex byte string without any formatting
This form can also be useful when you want to convert data rather than view it manually:
Example:
Output:
So no spaces or newlines, just the hex.
Tested on Ubuntu 23.04.
Related: How to create a hex dump of file containing only the hex characters without spaces in bash?