struct.pack
和
struct.unpack
将各种类型的数据打包到字节流中:
>>> import struct
>>> sample = [0.9,120000,0.85,12.8,0.1,28,16,124565,0.72,3.9]
>>> data = struct.pack('<10f',*sample)
>>> print(data)
b'fff?\x00`\xeaG\x9a\x99Y?\xcd\xccLA\xcd\xcc\xcc=\x00\x00\xe0A\x00\x00\x80A\x80J\xf3G\xecQ8?\x9a\x99y@'
>>> data = struct.unpack('<10f',data)
>>> data
(0.8999999761581421, 120000.0, 0.8500000238418579, 12.800000190734863, 0.10000000149011612, 28.0, 16.0, 124565.0, 0.7200000286102295, 3.9000000953674316)
在上述代码中
<10f
意味着将十个浮点(小尾数)打包(或解包)成一个字节字符串。
另一个选项是使用JSON将列表对象序列化为字符串并将其编码为字节字符串:
>>> import json
>>> data = json.dumps(sample).encode()
>>> data # byte string
b'[0.9, 120000, 0.85, 12.8, 0.1, 28, 16, 124565, 0.72, 3.9]'
>>> json.loads(data) # back to list of floats
[0.9, 120000, 0.85, 12.8, 0.1, 28, 16, 124565, 0.72, 3.9]