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!
Однако , потому что ваш данные имеют длину 8 байт, вы можете рассматривать их как одно значение с плавающей точкой точности double
:
>>> struct.unpack('d', b'+001.80\r')
(3.711588247816385e-245,)
Но это обрабатывает данные как двоичные: +001.80\r
, также известный как 2b 30 30 31 2e 38 30 0d
, как выглядит 3.711588247816385e-245
в памяти.