有人知道如何在 C++ 中将 long double 转换为 hex 以及如何从 hex 转换为 long double 吗?我已经使用 istringstream 将 HEXstring 转换为 double 到 long long 并将其转换为 double,但不知道如何转换 long double,以及如何测试类似的东西。
最佳答案
如果您真的确定要这样做,您最多可以使用 union 来“欺骗类型系统”。显然,这是原始内存访问,并且有很多警告。其中最重要的一点是,它仅“通常”有效,但不受语言规范的保证。
输出 long double 的原始字节的代码如下。从十六进制字符串重新组装长 double 的代码应该不难自己提供。
#include <stdio.h>
typedef union {
long double ld;
char bytes[sizeof(long double)];
} converter;
int main() {
converter c;
c.ld = 3.49;
printf("0x");
for (int i = 0; i < sizeof(long double); ++i) {
printf("%x", c.bytes[i]);
}
printf("\n");
}
关于c++ - 十六进制到长双C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18118997/