我正在尝试创建一个函数来接受浮点变量并将其转换为字节数组。我找到了一段有效的代码片段,但如果可能的话,希望在函数中重用它。
我也在使用 Arduino 环境,但我知道它接受大多数 C 语言。
目前工作:
float_variable = 1.11;
byte bytes_array[4];
*((float *)bytes_array) = float_variable;
我可以在此处更改什么以使此功能正常工作?
float float_test = 1.11;
byte bytes[4];
// Calling the function
float2Bytes(&bytes,float_test);
// Function
void float2Bytes(byte* bytes_temp[4],float float_variable){
*(float*)bytes_temp = float_variable;
}
我对指针之类的不太熟悉,但我读过(float)正在使用铸造什么的?
任何帮助将不胜感激!
Cheers
*编辑:已解决
这是我在 Arduino 中运行的最终函数,供任何发现它的人使用。下面的答案中有更有效的解决方案,但是我认为这是可以理解的。
功能:将输入浮点变量转换为字节数组
void float2Bytes(float val,byte* bytes_array){
// Create union of shared memory space
union {
float float_variable;
byte temp_array[4];
} u;
// Overite bytes of union with float variable
u.float_variable = val;
// Assign bytes to input array
memcpy(bytes_array, u.temp_array, 4);
}
调用函数
float float_example = 1.11;
byte bytes[4];
float2Bytes(float_example,&bytes[0]);
感谢大家的帮助,在过去的 20 分钟里我学到了很多关于指针和引用的知识,干杯 Stack Overflow!