【问题标题】:how to transform a double into an array of bytes in c如何在c中将double转换为字节数组
【发布时间】:2015-08-06 18:35:52
【问题描述】:

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

【问题讨论】:

  • 一个函数可以返回一个结构体或联合体。

标签: c microcontroller


【解决方案1】:

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

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

d2b.d = 3.14;

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

编辑:

看到您的编辑。您也可以只 memcpy 并通过输出参数“返回”它:

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

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多