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

how to transform a double into an array of bytes in c

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

您可以通过联合使用 type-punning

union{
    double d;
    unsigned char bytes[sizeof(double)];
} d2b;

d2b.d = 3.14;

您可以通过d2b.bytes访问字节。请注意,这假设两个微控制器对 doubles 使用相同的(内部)表示。如果不是,请使用某种 serialization.

编辑:

正在查看您的编辑。您也可以通过输出参数 memcpy 和 'return' 它:

unsigned char * doubleToBytes(unsigned char bytes[sizeof(double)], double d){
    return memcpy(bytes, &d, sizeof d);
}