我试图拿两个双打(GPS坐标)并通过ZigBee API将它们发送到另一个ZigBee接收器单元,但我不知道如何将双精度分解为字节数组,然后将它们重新组合成原始形式一旦他们被转移.
基本上,我需要将每个double转换为一个包含8个原始字节的数组,然后获取原始数据并重新构建double.
有任何想法吗?
这是一种相当不安全的方法:
double d = 0.123;
char *byteArray = (char*)&d;
// we now have our 8 bytes
double final = *((double*)byteArray);
std::cout << final; // or whatever
Run Code Online (Sandbox Code Playgroud)
或者您可以使用 reinterpret_cast:
double d = 0.123;
char* byteArray = reinterpret_cast<char*>(&d);
// we now have our 8 bytes
double final = *reinterpret_cast<double*>(byteArray);
std::cout << final; // or whatever
Run Code Online (Sandbox Code Playgroud)
您正在做的事情叫做type punning。
使用联合:
union {
double d[2];
char b[sizeof(double) * 2];
};
Run Code Online (Sandbox Code Playgroud)
或使用reinterpret_cast:
char* b = reinterpret_cast<char*>(d);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12833 次 |
| 最近记录: |