在 Python 中将字符串从 big-endian 转换为 little-endian,反之亦然

Tim*_*ter 6 python python-3.x

我有一个带有十六进制字符的长字符串。
例如:

string = "AA55CC3301AA55CC330F234567"
Run Code Online (Sandbox Code Playgroud)

我正在使用

string.to_bytes(4, 'little')
Run Code Online (Sandbox Code Playgroud)

我希望最终的字符串如下:

6745230F33CC55AA0133CC55AA
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误

AttributeError: 'str' object has no attribute 'to_bytes'

这里有什么问题?

dan*_*ers 9

to_bytes只适用于整数,据我所知。

你可以使用bytearray

>>> ba = bytearray.fromhex("AA55CC3301AA55CC330F234567")
>>> ba.reverse()
Run Code Online (Sandbox Code Playgroud)

要将其转换回字符串,请使用format

>>> s = ''.join(format(x, '02x') for x in ba)
>>> print(s.upper())
6745230F33CC55AA0133CC55AA
Run Code Online (Sandbox Code Playgroud)


Gur*_*ult -4

也许你可以反转字符串,其中一种方法是

string = "AA55CC3301AA55CC330F234567"[::-1]
Run Code Online (Sandbox Code Playgroud)

  • 这是完全错误的。要改变字节序,反转字符串对我们人类来说似乎是正确的,但实际上是不正确的。例如,如果我们有字节数组或“0x12 0x34 0x56 0x78”,则更改后的字节顺序输出将是“0x78 0x56 0x34 0x12”,而不是“0x87 0x65 0x43 0x21” (2认同)