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

Convert hex string to usably hex

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

我试过使用 struct.pack,但它需要一个有效的整数。每次我尝试转换十六进制函数时,它都会转换 43。我需要它来分配内存漏洞。

我可以访问 python 2.7

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

是我想要达到的

您可以尝试这样做:

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

您有一个 字符串 输入。您可以使用 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

参见:

  • Convert hex string to int in Python
  • Convert a Python int into a big-endian string of bytes