Моя конечная цель - иметь возможность посылать массив с плавающей точкой через сокет UDP, но сейчас я просто пытаюсь заставить некоторые вещи работать в python3.
Код ниже работает просто отлично:
import struct
fake_data = struct.pack('f', 5.38976)
print(fake_data)
data1 = struct.unpack('f', fake_data)
print(data1)
Выход:
b'\xeax\xac@'
(5.3897600173950195,)
Но когда я пытаюсь это сделать, я получаю:
electrode_data = [1.22, -2.33, 3.44]
for i in range(3):
data = struct.pack('!d', electrode_data[i]) # float -> bytes
print(data[i])
x = struct.unpack('!d', data[i]) # bytes -> float
print(x[i])
Выход:
63
Traceback (most recent call last):
File "cbutton.py", line 18, in <module>
x = struct.unpack('!d', data[i]) # bytes -> float
TypeError: a bytes-like object is required, not 'int'
Как я могу превратить массив с плавающей точкой в байтовый массив и наоборот. Причина, по которой я пытаюсь это сделать, заключается в том, что первый код позволяет мне отправлять плавающие данные с клиента на сервер (один за другим) с использованием сокета UDP. Моя конечная цель - сделать это с массивом, чтобы я мог построить значения с помощью matplotlib.