我有一个包含十六进制字符的长字符串,例如:
string = "AA55CC3301AA55CC330F234567"
我正在使用
string.to_bytes(4, 'little')
我希望最终的字符串如下所示:
6745230F33CC55AA0133CC55AA
但是我遇到了一个错误
AttributeError: 'str' object has no attribute 'to_bytes'
这里出了什么问题?
我有一个包含十六进制字符的长字符串,例如:
string = "AA55CC3301AA55CC330F234567"
我正在使用
string.to_bytes(4, 'little')
6745230F33CC55AA0133CC55AA
但是我遇到了一个错误
AttributeError: 'str' object has no attribute 'to_bytes'
这里出了什么问题?
int.to_bytes
和int.from_bytes
的convert_hex
函数:def int2bytes(i, enc):
return i.to_bytes((i.bit_length() + 7) // 8, enc)
def convert_hex(str, enc1, enc2):
return int2bytes(int.from_bytes(bytes.fromhex(str), enc1), enc2).hex()
be = "AA55CC3301AA55CC330F234567"
convert_hex(be, 'big', 'little')
注意,你的问题与2009年的这个问题非常相似。虽然旧线程要求单向转换,而你要求“反向”转换,但无论你从哪种字节顺序开始,实际上都是同一件事。让我来展示一下,
0x12345678 -> 0x78563412 -> 0x12345678
使用软件黑客工具pwntools
进行转换非常容易。特别是为了避免打包和解包混乱, pwntools嵌入了p32()函数,专门用于此目的
import pwntools
x2 = p32(x1)
这是你正在寻找的答案/代码吗?
def little(string):
t= bytearray.fromhex(string)
t.reverse()
return ''.join(format(x,'02x') for x in t).upper()
little(s=AA55CC3301AA55CC330F234567)
string = "AA55CC3301AA55CC330F234567"[::-1]