如何对大文件进行十六进制转储

5

我想输出一个 8GB 文件的十六进制转储结果。是否可以分段进行?如何指定有限数量的行数(我已经阅读了 man 手册,似乎对应于 -n 长度,但它没有起作用)


我怀疑你真正需要的不是文件的ASCII十六进制转储 - 最终结果将超过原始大小的3倍。你需要找到一个好的十六进制编辑器,它允许你查看/搜索/操作文件并给你一个十六进制转储显示。如果你把问题退一步,并问问你通过十六进制转储8GB文件想要实现什么,你可能会得到更有帮助的答案和解决方案,而不是被困在30GB难以搜索的文本中。 - Sean McSomething
2个回答

11

想做这样的事情吗?即将字节 3600 到 3700 转储:

$ hexdump -n 100 -s 3600 -v -e '32/1 "%02x" "\n"' some_file

-s 3600 ; search to offset 3600 before starting dump.
-n 100 ; dump 100 bytes.
-e '32/1 "%02x" "\n"' ; dump 32 bytes pr. line and print by 1 as zero padded hex.

如果你需要行偏移而非字节,你可能需要采用例如 sed 的工具:
$ sed -n '3701q;3600,3700p' some_file | hexdump -ve '32/1 "%02x" "\n"'

根据你将使用数据的目的,这也是一个适合编写短C程序的好选择;P


0
如果您想要像在debug.com中一样获得文件的十六进制转储,则可以执行以下操作:
Debug不允许您打开超过64K大小的文件,但是有一些软件可以在Android手机上使用。在Google Play商店中可用的一个这样的软件是“Hex Editor”。我可以在那个“Hex Editor”中打开一个46 MB的文件。我可以看到十六进制转储,就像我可以在debug.com中看到文件一样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接