如何在Python中获取未转义的转义十六进制值

时间:2012-11-09 11:11:38

标签: python file-io type-conversion

我在Python中实现了一个简单的文件搜索和阅读:

>>>f = open("<filepath>", "rb")
>>>f.seek(0x20) #offset 0x20
>>>byte=f.read(4) #4 byte space

我最终得到了

>>>byte
'\xe0\x00\x00\x00'

这是预期的结果,但是我需要将其用作十六进制值而不用转义进行进一步的计算。

如何将这样的字符串转换为未转义的十六进制值? (在上面的示例'\ xe0 \ x00 \ x00 \ x00'应转换为'e0000000'或'0xe0000000'。)

3 个答案:

答案 0 :(得分:1)

使用encode('hex')

>>> byte.encode('hex')
'e0000000'

# convert it to int
>>> int(byte.encode('hex'), 16)
3758096384

答案 1 :(得分:0)

您可以使用byte.encode('hex')来获取十六进制值。

答案 2 :(得分:0)

您可以使用struct模块将字节解压缩为数字,然后按照您希望的方式格式化。

inport struct
print '{:08x}'.format(struct.unpack('>I', byte)[0])

输出:

e0000000