代码之家  ›  专栏  ›  技术社区  ›  Jake

二进制数据库对齐或打包

  •  0
  • Jake  · 技术社区  · 16 年前

    有没有一种方法可以通过十六进制编辑器或其他方式查看二进制文件中的数据是否对齐或打包,特别是对于hpux系统?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Jonathan Leffler    16 年前

    如果您知道您在寻找什么,并且可以在十六进制转储中识别它,那么您可以对数据是对齐的还是不对齐的,或者是打包的做出明智的估计。但在许多方面,你的问题是无法回答的。数据来自哪里?为什么你不能问那个人(大概是在开一个程序)它是如何创建的?

    如果您询问“我可以使用哪些工具查看数据”,那么您可以考虑:

    • OD(八进制转储-可能也有-C选项)
    • HD(十六进制转储-不总是可用,而且似乎在HP-UX上不存在)
    • sed l(小写ell—表示列出数据;除非大部分数据是纯文本,否则不是一个好的选择)

    或者可以用Perl来实现。很久以前(1987年左右),我写了一个程序odx(八进制转储,十六进制-奇怪),我继续使用-它给我一个十六进制转储,每行16字节,加上一个可打印字符的图像。这个例子不太令人兴奋(ODX本身运行-在一个Sun Sparc上):

    Black JL: odx odx | sed 10q
    0x0000: 7F 45 4C 46 01 02 01 00 00 00 00 00 00 00 00 00   .ELF............
    0x0010: 00 02 00 12 00 00 00 01 00 01 0D 84 00 00 00 34   ...............4
    0x0020: 00 00 77 9C 00 00 01 00 00 34 00 20 00 05 00 28   ..w......4. ...(
    0x0030: 00 24 00 23 00 00 00 06 00 00 00 34 00 01 00 34   .$.#.......4...4
    0x0040: 00 00 00 00 00 00 00 A0 00 00 00 A0 00 00 00 05   ................
    0x0050: 00 00 00 00 00 00 00 03 00 00 00 D4 00 00 00 00   ................
    0x0060: 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 04   ................
    0x0070: 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00   ................
    0x0080: 00 00 00 00 00 00 22 86 00 00 22 86 00 00 00 05   ......"...".....
    0x0090: 00 01 00 00 00 00 00 01 00 00 22 88 00 02 22 88   .........."...".
    Black JL: