我正在编写一个在32位微控制器上运行的程序。我有一个双,我想将其转换为一个字节数组。这些字节稍后将被发送到另一个微控制器。但我不知道应该使用哪种方法来执行此任务。有什么建议吗? 问题在于c无法定义返回数组的函数。所以我必须在函数外部定义一个数组,然后在不满足我需要的c函数内处理它
答案 0 :(得分:1)
您可以通过联合使用type-punning:
union{
double d;
unsigned char bytes[sizeof(double)];
} d2b;
d2b.d = 3.14;
您可以通过d2b.bytes
访问字节。请注意,这假设两个微控制器对double
s使用相同(内部)表示。如果没有,请使用某种serialization。
修改强>
看到你的编辑。你也可以memcpy
和'返回'它通过输出参数:
unsigned char * doubleToBytes(unsigned char bytes[sizeof(double)], double d){
return memcpy(bytes, &d, sizeof d);
}