我需要创建一个由非ascii字节组成的Python字符串,用作C模块中的命令缓冲区。 如果我手工编写字符串,我可以这样做:
mybuffer = "\x00\x00\x10"
但如果我有一组整数将成为字符串中的字节,我无法弄清楚如何动态创建字符串。将整数与字符串连接是TypeError。
因此,如果我有一个整数列表,请说:
myintegers = [1, 2, 3, 10]
如何将其转换为字符串"\x01\x02\x03\x0A"
我正在使用Python 2.6。
答案 0 :(得分:4)
u''.join(map(unichr, myintegers))
会做你想做的事。
答案 1 :(得分:3)
''.join(chr(i) for i in myintegers)
bytes(myintegers)
答案 2 :(得分: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