如何从非ASCII字节生成Python字符串
我需要创建一个包含非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))
这个代码可以很好地完成你想要的功能。