假设给定偏移量的文件中的位置始终为32位:
| 00 01 02 03 04
-----|---------------
0x30 | 99 9E 36 00 AC
如何检索跨越多个字节的十六进制值(案例1)?现在还给出了十六进制值需要反转,想要的结果应该是0xAC00369E99(案例2)。
在Python中检索此值的快速,有效或干净的方法是什么?
编辑:这是我现在这样做的方式
def hexAtOffset(path):
with open(path, "rb") as file:
content = file.read()
pointer = 0x30
hexString = ""
for i in range (5):
hexString += str(hex(content[pointer] ) )[2:]
pointer+=1
return hexString[::-1]
print (hexAtOffset() )
我面临的一个问题是0x00中的两个零缩短为0x0
答案 0 :(得分:0)
content[0x30:][:5][::-1].hex()
演示:
>>> content = b'.' * 0x30 + b'\x99\x9e\x36\x00\xac' + b'.'
>>> content[0x30:][:5][::-1].hex()
'ac00369e99'
虽然假设这是XY problem ...
>>> int.from_bytes(content[0x30:][:4], 'little')
3579545
或
>>> struct.unpack('i', content[0x30:][:4])[0]
3579545
(因为你说" 32位""时钟频率"显然3579545赫兹是somewhat popular clock rate)。