我正试图转换一个4的数组
byte
值到单个
float
Arduino中的值。
我正在使用
union
以便存储我的值,并且我能够转换
long
到
浮动
那样。
这是代码:
union value {
float f;
unsigned long l;
byte b[4];
} value;
void setup()
{
Serial.begin(9600);
// Setting 105.00 to the value variable via modifying the field "l"
value.l = 0x42D20000;
Serial.println("\nFloat value: " + String(value.f));
Serial.print("Byte values: {");
for (int i = 0; i < 4; i++)
{
Serial.print(value.b[i], HEX);
Serial.print(", ");
}
Serial.println("}");
// Setting 4.55 to the value variable via modifying the field "b"
value.b[0] = 0X40;
value.b[1] = 0X91;
value.b[2] = 0X99;
value.b[3] = 0X9A;
Serial.println("Float value: " + String(value.f));
Serial.print("Byte values: {");
for (int i = 0; i < 4; i++)
{
Serial.print(value.b[i], HEX);
Serial.print(", ");
}
Serial.println("}");
}
void loop()
{
}
我首先尝试将105的值代入
l
字段,然后读取
f
领域这似乎是成功的,我在中获得了所需的105.00
f
字段,如果我试着从中阅读。
但是,我随后想将4.55的值分配给
f
字段中的每个字节条目
b
数组字段。这似乎不起作用,我在
f
字段,如果我试着从中阅读。
这是上面显示的代码的当前输出:
Float value: 105.00
Byte values: {0, 0, D2, 42, }
Float value: -0.00
Byte values: {40, 91, 99, 9A, }
当单个字节成功保存在
b
字段
f
字段似乎不会自动更新。
关于为什么我不能获得4.55作为我的
f
字段在上面代码的后半部分?
感谢您阅读我的文章,如有任何指导,不胜感激。