【发布时间】:2009-04-17 03:35:21
【问题描述】:
如何获取四个接收到的数据字节并将它们组合成一个浮点数?
现在我将 bytes 存储在一个数组中,即 received_data[1] ... received_data[4] .我想将这四个 bytes 存储为单个 32 位单精度 float。
-谢谢
我实际上收到了一个包含 19 个字节的数据包,并将两组四个字节组合成两个浮点数。所以 received_data[1] 到 received_data[4] 是一个浮点数,received_data[5] 到 received_data[8] strong> 是另一个...
*更新:**** **更多信息...
第一个 bit,或 float 的 sign 位,是第一个 byte 的第七位,这里是我做了什么检查...
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
if( CHECK_BIT(received_data[1], 7)) //set or clear LED2
{LATAbits.LATA2=1;}else{LATAbits.LATA2=0;}
if( CHECK_BIT(received_data[5], 7)) //set or clear LED3
{LATAbits.LATA3=1;}else{LATAbits.LATA3=0;}
然后我通过从我的数据源发送交替的正数和负数来检查这一点,这应该相应地改变了 LED 并且它起作用了。
只要所有这些都成立,这意味着字节的顺序是正确的,但它们是以小端方式存储的,对吗?这会以正确的顺序存储到浮点数中吗?我还没有运气解析字节并将其作为浮点数读取......
如果有人对此有任何经验,我正在使用 C18 MPLAB IDE 编译器。
最终更新:
我的应用程序正在运行!现在只是一些小错误修复!
谢谢!
感谢大家的帮助!我是 stackoverflow 的新手,但是这里的这个社区真的很棒!像这样的工具真的是无价之宝!我什至无法告诉你你为我节省了多少时间和挫折!
【问题讨论】:
-
它将是 received_data[0] ... received_data[3]。 0-索引!
-
我实际上正在接收一个包含 19 个字节的数据包,并将两组四个字节组合成浮点数。所以 received_data[1] 到 received_data[4] 是一个浮点数, received_data[5] 到 received_data[9] 是另一个...
标签: c string parsing floating-point