我试图使一个函数接受一个float变量并将其转换成一个字节数组.我发现一个代码片段可以工作,但是如果可能的话,想在一个函数中重用它.
我也在使用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)使用的是cast或某些东西?
任何帮助将不胜感激!
干杯
*编辑:解决
这是我在Arduino工作的最终功能,任何人谁找到这个.在下面的答案中有更有效的解决方案,但是我认为这是可以理解的.
功能:将输入的float变量转换为字节数组
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分钟,干杯堆溢出!