如何将double转换为c中的字节数组

时间:2015-08-06 18:35:52

标签: c microcontroller

我正在编写一个在32位微控制器上运行的程序。我有一个双,我想将其转换为一个字节数组。这些字节稍后将被发送到另一个微控制器。但我不知道应该使用哪种方法来执行此任务。有什么建议吗? 问题在于c无法定义返回数组的函数。所以我必须在函数外部定义一个数组,然后在不满足我需要的c函数内处理它

1 个答案:

答案 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);
}