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