我正在用 c 语言编写一个在 32 位微 Controller 上运行的程序。我有一个 double ,我想将其转换为字节数组。这些字节稍后将被发送到另一个微 Controller 。但我不知道应该使用哪种方法来执行此任务。有什么建议吗? 问题在于 c 中无法定义返回数组的函数。所以我必须在函数外部定义一个数组,然后在c函数内部处理它,这不能满足我的需求
最佳答案
您可以使用type-punning通过 union :
union{
double d;
unsigned char bytes[sizeof(double)];
} d2b;
d2b.d = 3.14;
您可以通过d2b.bytes
访问字节。请注意,这假设两个微 Controller 使用相同的(内部) double 表示。如果没有,请使用某种 serialization .
编辑:
正在查看您的编辑。您也可以只使用 memcpy
并通过输出参数“返回”它:
unsigned char * doubleToBytes(unsigned char bytes[sizeof(double)], double d){
return memcpy(bytes, &d, sizeof d);
}
关于c - 如何在c中将 double 型转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863349/