python, 字符串转十六进制数组

python, string to hex array

快问,我要这个(当然python3):

frame = "AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA"

对此:

frame = [0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA, 0x5, 0x5, 0x5, 0xA, 0xA, 0xA]

我们可以试试这个:

frame = "AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA"
[int(character, 16) for character in frame]
# [10, 10, 10, 5, 5, 5, 10, 10, 10, 5, ... ]

正如@Reti43 在 中指出的那样,像0xA 这样的十六进制值对应于像10 这样的数字,所以这就是结果列表具有整数的原因。

如果 OP 需要十六进制,则可以使用以下字符串表示形式。然后可以将此字符串传递给 int 以获取相应的整数。

frame = "AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA555AAA"
[f"0x{character}" for character in frame]
# ['0xA', '0xA', '0xA', '0x5', '0x5', '0x5', '0xA', '0xA', '0xA', '0x5', ...]