如何从非ASCII字节生成Python字符串

5 投票
3 回答
1741 浏览
提问于 2025-04-16 04:58

我需要创建一个包含非ASCII字节的Python字符串,这个字符串会用作C模块中的命令缓冲区。
如果我手动写这个字符串,我可以做到:

mybuffer = "\x00\x00\x10"

但是如果我有一组整数,这些整数要变成字符串中的字节,我就不知道怎么动态生成这个字符串了。把一个整数和字符串拼接在一起会报类型错误(TypeError)。

假设我有一个整数列表:

myintegers = [1, 2, 3, 10]

我该怎么把它转换成字符串 "\x01\x02\x03\x0A" 呢?
我使用的是Python 2.6。

3 个回答

0
In [28]: import struct

In [29]: struct.pack('{0}B'.format(len(myintegers)),*myintegers)
Out[29]: '\x01\x02\x03\n'
In [47]: '\x01\x02\x03\n'=="\x01\x02\x03\x0A"
Out[47]: True

请注意,

3

Python 2.X

''.join(chr(i) for i in myintegers)

Python 3.X

bytes(myintegers)
4

u''.join(map(unichr, myintegers)) 这个代码可以很好地完成你想要的功能。

撰写回答