首先要引用 import struct
structpack(A,*B)
A:是一个字符串,但是它代表输出的格式
B:是一堆参数代表要处理的内容
这玩意 pack()是打包 unpack()解包
struct.pack(‘BBB’,1,2,3)#这个 B对应每一个数字3个数字三个B
=>b'x01x02x03'
ct.unpack('bbb',b'x01x03x05')#可以直接把流数据解析出元祖来
=>(1, 3, 5)
aa=b'xaaxf9xcex04Qx0fxf2U'
struct.unpack('8B',aa)#字母前的数字表示几个字母,
等价于八个B==>struct.unpack(‘bbbbbbbb’,aa)
=>(170, 249, 206, 4, 81, 15, 242, 85)
通过B H 组合能解析数据。顺便都能算出来 都不用移位计算了
这里有个注意事项:
关于pack(’>BBB’,1,2,3)的
b=struct.pack(‘BBB’,1,2,3) #这样是OK的 如果: a=(1,2,3) b=struct.pack(‘BBB’,a) #这样是不行的,因为它弄不聊元祖和列表所以要加个星号的写法解包 b=struct.pack(‘BBB’,*a) #这样是可以了一年后的补充,
可以解析浮点数比如
cc=struct.unpack('>f',b'x3fx9ex04x19')
#单精度浮点数用f ,四个字节一个数字,前面加个> 表示大端
结果:(1.2345,)
这个配合485通信可以直接传输小数,尤其是淘宝上的485数码管基本就可以直接用这玩意传输直接显示。
下面是
大端高位在左 人类喜欢
小端高位在右 计算机喜欢
二进制数据
data1 = b'/xa2'
data2 = b'/xe2'
#如果这两个数据合在一起是一个汉子就必须拼接在一起那么就用STRUCT
#首先把他俩加到一个列表里
a=[data1,data2]
#加到列表里是因为二进制一般数据非常多,都是列表处理的,演示数据虽然少但也用列表吧
counts=struct.pack('2b',*a) #二进制不能拼接,采用封包模式,记得有星号



