C/C++中double与byte数组互转的方法
作者:野牛程序员:2023-11-09 12:06:42 C++阅读 3681
在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

