我想将设备中的数据从叮咬转换为浮动我使用此答案中的代码
import struct
byte_file = b'+001.80\r'
print(type(byte_file))
y = struct.unpack('f' , byte_file)
print(y)
Run Code Online (Sandbox Code Playgroud)
我明白了 struct.error: unpack requires a buffer of 4 bytes
正确的结果应该是1.80
我需要实现缓冲区参数吗?
struct用于二进制打包数据- 非人类可读的数据。b'+001.80\r'是 8 个字节长:b'+', b'0', b'0', b'1', b'.', ....
您可以decode使用它并使用float:
>>> b'+001.80\r'.decode()
'+001.80\r'
>>> float(_)
1.8
>>> import struct
>>> struct.pack('f', _)
b'ff\xe6?' # doesn't look anything like your data!
Run Code Online (Sandbox Code Playgroud)
但是,因为您的数据有 8 个字节长,您可以将其视为单double精度浮点值:
>>> struct.unpack('d', b'+001.80\r')
(3.711588247816385e-245,)
Run Code Online (Sandbox Code Playgroud)
但这将数据视为二进制打包:+001.80\r,也称为2b 30 30 31 2e 38 30 0d,是3.711588247816385e-245内存中的样子。