将十六进制字符串转换为可用的十六进制
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
我想转换从文件中读取的十六进制字符串 “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