将十六进制字符串转换为可用的十六进制

时间:2019-11-23 16:05:50

标签: python memory hex

我想转换从文件中读取的十六进制字符串 “ 0xbffffe43”为以小尾数“ \ x43 \ xfe \ xff \ xbf”编写的值。

我尝试使用struct.pack,但它需要一个有效的整数。每当我尝试转换十六进制函数时,它将转换为43。我需要此来分配内存利用。

我可以使用python 2.7

a = "0xbffffe43"
...
out = "\x43\xfe\xff\xbf"

这是我想要实现的目标

2 个答案:

答案 0 :(得分:1)

您可以尝试做:

my_hex = 0xbffffe43
my_little_endian = my_hex.to_bytes(4, 'little')
print(my_little_endian)

答案 1 :(得分:1)

您输入的是 string 。您可以使用int和基数将其转换为整数。

>>> a = "0xbffffe43"
>>> import struct
>>> out = struct.pack("<I",int(a,16))
>>> out
b'C\xfe\xff\xbf'

使用b前缀是因为解决方案已通过python 3进行了测试。但是它也可以作为python 2使用。

C这样打印,因为python解释可打印字符。但是

>>> b'C\xfe\xff\xbf' == b'\x43\xfe\xff\xbf'
True

请参阅: