从多字节长的文件中检索十六进制值(并反转十六进制数字)?

时间:2018-03-03 22:18:46

标签: python python-3.x

假设给定偏移量的文件中的位置始终为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

1 个答案:

答案 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)。