Python 如何制作字节列表?

Python 如何制作字节列表?,python,arrays,byte,Python,Arrays,Byte,要为二进制网络协议打包数据,我需要将整数转换为字节列表,以便在struct.pack(“ccc”,myList) 我发现这不起作用: (使用integer.to_字节) 例外情况是字符格式需要长度为1的字节对象,因为该列表是的列表,即使它是由.to_bytes()创建的 但该代码确实有效: myData = 0x123456 packed = struct.pack("ccc", *[bytes([x]) for x in myData.to_bytes(3, byteorder='little

要为二进制网络协议打包数据,我需要将整数转换为字节列表,以便在
struct.pack(“ccc”,myList)

我发现这不起作用:
(使用
integer.to_字节

例外情况是
字符格式需要长度为1的字节对象,因为该列表是
的列表,即使它是由
.to_bytes()
创建的

但该代码确实有效:

myData = 0x123456
packed = struct.pack("ccc", *[bytes([x]) for x in myData.to_bytes(3, byteorder='little')])
# This uses a list-comprehension to convert myData to a list of bytes, instead of a list of integers.

我试图理解为什么
.to_bytes()
函数给了我一个整数列表,以及是否有比使用冗长的列表理解将整数转换为整数字节列表再转换为字节列表更具python风格的方式。

to_bytes
是转换为
字节对象的python风格。我认为您缺少的是,根据定义,字节对象的元素将是一个字节整数

从:

由于
bytes
对象是整数序列(类似于元组),因此对于bytes对象b,b[0]将是整数,而b[0:1]将是长度为1的bytes对象

最可能的情况是,您要做的是使用
'B'
(无符号字符)格式字符

data=0x123456
packed=struct.pack('BBB',*data.to_字节(3,'little'))

非常感谢!从
“c”
切换到“B”`使代码更加直观。
myData = 0x123456
packed = struct.pack("ccc", *[bytes([x]) for x in myData.to_bytes(3, byteorder='little')])
# This uses a list-comprehension to convert myData to a list of bytes, instead of a list of integers.