我有一个整数数组,需要把它转换成字符串。
[1,2,3,4] => '\x01\x02\x03\x04'
我该使用哪个函数呢?我尝试了str(),但它返回的是'1234'。
string = ""
for val in [1,2,3,4]:
string += str(val) # '1234'
我有一个整数数组,需要把它转换成字符串。
[1,2,3,4] => '\x01\x02\x03\x04'
string = ""
for val in [1,2,3,4]:
string += str(val) # '1234'
''.join([chr(x) for x in [1, 2, 3, 4]])
str
而不是bytes
,这很可能不是您想要的。 - abarnertstr
,用于文本字符串和字节字符串,因此没有关系。当移植到3.x时,您必须根据上下文判断其意图。我猜测OP的意图是字节,因为几乎所有合理的控制字符序列使用——终端转义序列、网络协议等——都是8位上下文,而不是Unicode文本上下文。如果他考虑的是Unicode代码点而不是8位字符,则U+0001到U+0004将是奇怪的选择。 - abarnertlist
转换为bytearray
:
如果它是一个可迭代对象,则必须是在范围0 <= x <256内的整数的可迭代对象,这些整数被用作数组的初始内容。
您甚至可以将bytearray
直接转换为str
(2.x)或bytes
(3.x或2.6+)。
事实上,在3.x中,您甚至可以直接将列表转换为bytes
,而无需经过bytearray
:
构造函数参数的解释与bytearray()相同。
因此:
str(bytearray([1,2,3,4])) # 2.6-2.7 only
bytes(bytearray([1,2,3,4])) # 2.6-2.7, 3.0+
bytes([1,2,3,4]) # 3.0+ only
如果你真的想要一个字符串在3.x版本中,而不是一个字节字符串,你需要对它进行解码:
bytes(bytearray([1,2,3,4])).decode('ascii')
请查看文档中的二进制序列类型以获取更多详细信息。
简单解决方案
digits = [1,2,3,4]
print(''.join(map(str,digits)))