c - 如何在c中将 double 型转换为字节数组

标签 c microcontroller

我正在用 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/

相关文章:

c - 如何在c中声明大小为n x n的内存。

c - 如何制作外部开关控制LED stm32f4板?

c - 如何通过避免 if-else 条件来提高当前代码的效率?

c - 使用微 Controller 有效控制 DAC

c++ - 您如何处理标准库中的 signed char -> int 问题?

c - getopt 的多个整数参数?

c - 为什么这个二维指针表示法有效而另一个无效

c - 如何使用 c 中的 CURL 库检查 FTP 连接?

c - 嵌入式系统中的启动代码流程,引导加载程序的概念?

c - PIC 上的 USART 传输问题