如何将非ascii“转换为Python字符串”;字节;

如何将非ascii“转换为Python字符串”;字节;,python,string,byte,Python,String,Byte,我需要创建一个由非ascii字节组成的Python字符串,用作C模块中的命令缓冲区。 如果我用手写字符串,我可以做到: mybuffer = "\x00\x00\x10" 但是如果我有一组整数,这些整数将成为字符串中的字节,那么我就不知道如何动态创建字符串。将整数与字符串串联是一个类型错误 因此,如果我有一个整数列表,让我们说: myintegers = [1, 2, 3, 10] 如何将其转换为字符串“\x01\x02\x03\x0A” 我使用的是Python2.6。u'。join(map

我需要创建一个由非ascii字节组成的Python字符串,用作C模块中的命令缓冲区。 如果我用手写字符串,我可以做到:

mybuffer = "\x00\x00\x10"
但是如果我有一组整数,这些整数将成为字符串中的字节,那么我就不知道如何动态创建字符串。将整数与字符串串联是一个类型错误

因此,如果我有一个整数列表,让我们说:

myintegers = [1, 2, 3, 10]
如何将其转换为字符串
“\x01\x02\x03\x0A”

我使用的是Python2.6。

u'。join(map(unichr,myintegers))
将很好地满足您的需要

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
Python2.X Python3.X
如果您不想超过256,请去掉前导的
u
,并使用
chr
而不是
unichr
。更好的是,使用
b'
以便2to3将其识别为
字节,而不是
str
''.join(chr(i) for i in myintegers)
bytes(myintegers)