将包含十六进制的字符串拆分为单独的值

2024-10-01 19:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的十六进制字符串:

s = "\x08\x00\x00\x00\x00\x00\x00\xefn\x15\x01\x00\x00\x00\x00\x10\x02l\t\xa0\x00\xf2\x00\x00\x00\xf2\x00"

我想得到一个单独值的列表,比如

['\x08', '\x00', etc]或{}

我尝试s.split()该字符串失败

s.split('\x')产生{}

s.split('\\x')导致 ['\x08\x00\x00\x00\x00\x00\x00\xefn\x15\x01\x00\x00\x00\x00\x10\x02l\t\xa0\x00\xf2\x00\x00\x00\xf2\x00']

任何试图遍历字符串并将每个“字符”转换为int或str以外的任何内容(这将导致大多数为“空”字符)的尝试都失败,并出现错误。有人能提出一种获得预期结果的方法吗?在


Tags: 字符串列表etc字符intsplitxa0x10
2条回答
s = "\x08\x00\x00\x00\x00\x00\x00\xefn\x15\x01\x00\x00\x00\x00\x10\x02l\t\xa0\x00\xf2\x00\x00\x00\xf2\x00"

print(list(bytearray(s)))
[8, 0, 0, 0, 0, 0, 0, 239, 110, 21, 1, 0, 0, 0, 0, 16, 2, 108, 9, 160, 0, 242, 0, 0, 0, 242, 0]

每个\xhh项在字符串中是一个字节。在

Python正在显示一个string表示法,这是一种字符串文字表示法,可以安全地复制并粘贴到任何ASCII上下文中以重建相同的值。在

因此,任何非ASCII码位都由转义序列表示,其中绝大多数由\xhh十六进制转义符表示。例如,您会注意到制表符使用\t转义序列。字符串中没有实际的\x字符,因此您也不能在'\\x'上拆分。在

只需将字符串传递给list(),就可以将其转换为单个字符的列表:

>>> s = "\x08\x00\x00\x00\x00\x00\x00\xefn\x15\x01\x00\x00\x00\x00\x10\x02l\t\xa0\x00\xf2\x00\x00\x00\xf2\x00"
>>> list(s)
['\x08', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\xef', 'n', '\x15', '\x01', '\x00', '\x00', '\x00', '\x00', '\x10', '\x02', 'l', '\t', '\xa0', '\x00', '\xf2', '\x00', '\x00', '\x00', '\xf2', '\x00']

相关问题 更多 >

    热门问题