Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3如何从整数列表生成bytes对象_Python_Python 3.x_Byte_Bytearray - Fatal编程技术网

Python3如何从整数列表生成bytes对象

Python3如何从整数列表生成bytes对象,python,python-3.x,byte,bytearray,Python,Python 3.x,Byte,Bytearray,我有一个与字节值(即[55,33,22])相对应的整数数组(均小于255),如何将其转换为类似的字节对象 b'\x55\x33\x22等 谢谢 我想会有用的 >>> my_list = [55, 33, 22] >>> struct.pack("b"*len(my_list),*my_list) b'7!\x16' 如果你想要十六进制,你需要使它在列表中十六进制 >>> my_list = [0x55, 0x33, 0x22] >&g

我有一个与字节值(即
[55,33,22]
)相对应的整数数组(均小于255),如何将其转换为类似的字节对象

b'\x55\x33\x22

谢谢

我想会有用的

>>> my_list = [55, 33, 22]
>>> struct.pack("b"*len(my_list),*my_list)
b'7!\x16'
如果你想要十六进制,你需要使它在列表中十六进制

>>> my_list = [0x55, 0x33, 0x22]
>>> struct.pack("b"*len(my_list),*my_list)
b'U3"'

在所有情况下,如果该值具有ascii表示形式,则当您尝试打印或查看它时,它将显示该值…

字节构造函数采用整数的iterable,因此只需将列表输入该值即可:

l = list(range(0, 256, 23))
print(l)
b = bytes(l)
print(b)
输出:

[0, 23, 46, 69, 92, 115, 138, 161, 184, 207, 230, 253]
b'\x00\x17.E\\s\x8a\xa1\xb8\xcf\xe6\xfd'
另请参见:

只需调用构造函数即可

正如文件所说:

…构造函数参数被解释为
bytearray()

如果您遵循该链接:


如果它是一个iterable,那么它必须是范围
0的整数的iterable。我想这很接近,我确实得到了这个错误
struct.error:byte格式需要-128@Startec
'b'
格式意味着有符号字节[-128127]。你想对无符号字节[0255]使用大写的
'B'
。你不需要为此使用
结构。呵呵,是的,但是你可以:P。。。(我不在py3中,但我现在看到了更好的解决方案:P,我认为也适用于py2)和Python2中的
字节(bytearray(l))
,因为在Python2中
字节是str
。很好地捕捉到了不匹配的十进制/十六进制输入和输出。
[0, 23, 46, 69, 92, 115, 138, 161, 184, 207, 230, 253]
b'\x00\x17.E\\s\x8a\xa1\xb8\xcf\xe6\xfd'
>>> list_of_values = [55, 33, 22]
>>> bytes_of_values = bytes(list_of_values)
>>> bytes_of_values
b'7!\x16'
>>> bytes_of_values == '\x37\x21\x16'
True
>>> list_of_values = [0x55, 0x33, 0x22]
>>> bytes_of_values = bytes(list_of_values)
>>> bytes_of_values == b'\x55\x33\x22'
True