我正在尝试float
使用 LMIC lora 库从 arduino 发送多个值。LMIC 函数仅将 auint8_t
作为其传输参数类型。
temp
包含我的温度值作为浮点数,我可以毫无问题地打印测量的温度:
Serial.println((String)"Temp C: " + temp);
有一个示例显示此代码用于进行转换:
uint16_t payloadTemp = LMIC_f2sflt16(temp);
// int -> bytes
byte tempLow = lowByte(payloadTemp);
byte tempHigh = highByte(payloadTemp);
payload[0] = tempLow;
payload[1] = tempHigh;
我不确定这是否可行,似乎不行。发送的结果数据是:FF 7F
我不相信这就是我要找的。我还尝试了以下转换过程:
uint8_t *array;
array = (unit8_t*)(&f);
使用arduino,这甚至不会编译。
确实有效但产生的结果太长的东西是:
String toSend = String(temp);
toSend.toCharArray(payload, toSend.length());
payloadActualLength = toSend.length();
Serial.print("the payload is: ");
Serial.println(payload);
但是当我得到我想要发送的其他值时,生成的十六进制太长了。
那么如何将 a 转换float
为一个uint8_t
值,为什么我原来的给定转换不能像我期望的那样工作呢?