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
