当前位置:首页 C++ > 正文

C/C++中double与byte数组互转的方法

作者:野牛程序员:2023-11-09 12:06:42 C++阅读 3549

在C/C++中,可以使用联合(union)来实现double与字节数组之间的互相转换。以下是一个示例代码,演示了如何将double转换为字节数组以及如何将字节数组转换回double

#include <stdio.h>
#include <string.h>

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

int main() {
    union DoubleBytes unionData;
    unionData.d = 3.14159;  // 你的 double 值

    // 将 double 转换为字节数组
    unsigned char byteArray[sizeof(double)];
    memcpy(byteArray, unionData.bytes, sizeof(double));

    // 打印字节数组的内容
    for (int i = 0; i < sizeof(double); i++) {
        printf("%02X ", byteArray[i]);
    }
    printf("\\n");

    // 将字节数组转换回 double
    union DoubleBytes convertedData;
    memcpy(convertedData.bytes, byteArray, sizeof(double));

    // 打印转换后的 double
    printf("Converted double: %f\\n", convertedData.d);

    return 0;
}

这段代码创建了一个联合DoubleBytes,其中包含一个double类型的成员d和一个字节数组bytes,它们共享内存。可以通过赋值来设置d,然后使用memcpy来将其内容复制到字节数组中,或者将字节数组的内容复制回d。这允许在double和字节数组之间进行双向转换。

请注意,这种方法需要小心处理字节顺序(即大端和小端),因为不同的系统可能有不同的字节顺序。在不同系统之间传输数据时,可能需要考虑字节顺序的问题。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击