【问题标题】:Calculate bytes between two hex offsets计算两个十六进制偏移量之间的字节
【发布时间】:2016-09-04 03:07:57
【问题描述】:

在 Python 中,我试图从二进制文件中提取一些数据。我知道我的数据的偏移量。它们总是一样的。例如,下面写的是前 4 个偏移量和转换后的十进制值。

  • 偏移1 - 0x00000409 - 1033
  • 偏移 2 - 0x0000103A - 4154
  • 偏移 3 - 0x00001C6B - 7275
  • 偏移量4 - 0x0000289C - 10396

我知道每个偏移量(在第一个偏移量之后)相差 3121 位小数,那么有没有办法可以跳到下一个偏移量?如何将 3121 小数移动到下一个偏移量?

我需要提取 128 个偏移量。我希望有一种方法可以动态确定偏移量之间的差异(字节数)?

然后我每次都可以得到相同的数据,使用 0x100 从偏移量中提取 256 个字符。

【问题讨论】:

  • 3121 是常量吗?我需要提取 128 个偏移量。我希望有一种方法可以动态确定偏移量之间的差异(字节数)?
  • 我有什么遗漏吗?你不能把 3121 添加到偏移量中

标签: python binary hex offset bytecode


【解决方案1】:

使用file.seek() 在文件中的位置之间跳转。在这种情况下,要转到文件中的下一个位置,您可以使用 file.seek(3121, 1),它会相对于当前位置提前 3121 个字节。

编辑:我没有意识到您在打开文件后更改了文件位置,因此您每次都应该提前寻找 2685 个字节,以说明您读取的 256 个字节。

【讨论】:

  • 我实际上是用一个 for 循环来做的,但使用 seek 的方式大致相同,感谢您对此的帮助:)
猜你喜欢
  • 2018-08-27
  • 2018-07-26
  • 1970-01-01
  • 2012-03-04
  • 2018-10-11
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多