c++ - 将 double 重新解释为 char*

标签 c++ char double reinterpret-cast

<分区>

我如何重新解释从 double 到 char* 的转换(我需要它以字节为单位存储文件中 double 的数据)。下面是代码,我不知道为什么它不起作用:

#include <iostream>
int main(int argc, char **argv)
{
    const double tmpDouble = 1234.;
    char *tmpChar = reinterpret_cast<char*>(tmpDouble);
    return 0;
}

最佳答案

如果你在那里工作,它可能不是你想要的 - 指针的值只是 1234 - 有效地指向可能包含任何东西的地址(不是它可以访问) .

如果你只是想要二进制格式的double,你可以这样做

const byte* pDouble = reinterpret_cast<const byte*>(&tmpDouble);
//                                      |
//                             note the address here

但首先检查您使用什么来写入文件,以查找直接采用 double 的函数原型(prototype)。

关于c++ - 将 double 重新解释为 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20555624/

相关文章:

C++ 消息包 : linker errors

c++ - Variadic 模板模拟 "runtime"扩展

c++ - 模板实参作为模板参数传给另一个模板时,为什么推导不出来?

c - 将大量字符串发送到标准输出的最佳方法是什么?

Android - 四舍五入到小数点后两位

java - 在 Hibernate 中使用原语或包装类?

python UnicodeDecodeError : 'utf8' codec can't decode byte

c - C中的十六进制到字符数组

c - 当数组大小固定时,sscanf 无法正确转换 float

string - 在 OCaml 中将字符转换为字符串