我在python中有一个程序,其中我想用一些值接收一个帧。这个值由xbee发送。将字符中的浮点数转换为浮点数(PYTHON)
的XBee发送由工会结构中的4个字节分裂的浮动,这样的事情:
typedef union _data{
float f;
char s[4];
} myFloat;
因此,例如,17.23给我10,-41,-119,65所以,我必须在python中恢复所有这些值,当我得到4后,将它们转换为浮点数。自从我读取每一个函数(serial.read())以获取浮点数结果后,我该做些什么?
这些值将被python脚本接收到,我想再次将它们加入到一个float中。我在python中阅读了关于struct的内容,但是我并不擅长python,我不明白它是如何工作的。
我使用serial.read逐个读取字节。
有什么想法?
目前尚不清楚是什么给你带来麻烦。如果你读了四个字节并把它们放到一个字符串's'中,那么你可以用'struct.unpack('4b',s)'将它们转换成'(10,-41,-119,65)', 'struct.unpack('f',s)[0]'(['0]''是必要的,因为你会得到一个元素的元组,而不是一个浮点数。)这是否有帮助? – DSM
但是,如何在字符串中设置字节?我试过:s = [10,-41,-119,65] print struct.unpack('f',s)[0] 但它告诉我它需要长度为4的字符串参数...我怎么读4个字节并将它们保存在一个字符串数组中? – Biribu
我以为你总是把浮子装进字符中,并想把这些字符变成浮子?无论如何,如果你有一个数字列表,你可以使用'struct.pack'将它们打包成一个字符串:try'n = [10,-41,-119,65]'然后'struct.pack('4b' ,* n)'得到一个四字节的字符串。我认为你应该编辑你的问题,使之更清楚你现在拥有什么以及你想要结束什么。 – DSM