C-c语言float和double如何和二进制字节数组互转(IEEE 754标准)

C-c语言float和double如何和二进制字节数组互转(IEEE 754标准)

清晨说ぺ晚安 发布于 2017-11-04 字数 104 浏览 1473 回复 2

比如
float <-> char[4]
double <-> char[8]
我尝试直接赋值失败,数据不对

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜无邪 2017-11-08 2 楼

1 使用内存拷贝函数。
2 指针和非指针之间的赋值,通过指针类型进行转换:

float f = 0.1;
char c[sizeof(float)];

*((float *)c) = f;
f = (float *)c;

灵芸 2017-11-07 1 楼

一个简单的方法:

union {
    float f;
    int i;
};

union {
    double d;
    int64 i;
};

union {
    float f;
    char c[4];
};

利用 union 的特性,后面的属性和第一个属性表示的意义相同。编译器帮助转换,很巧妙啊。