每个值64位整数的数字应转换为位等效的64位浮数

Each deserialized 64 bit integer number should be converted to bit wise equivalent 64 bit floating number

本文关键字:64位 整数 数字 转换      更新时间:2023-10-16

我在文件中具有以上语句。预期输出是两倍。我找不到与我的问题相关的东西。我找到了这个通过C中的插座传递结构但是不知道它是否相关。我没有阅读该INT64值。我正在从其他过程中获得它,这就是它的设计方式。

有人对ints的序列化和估算化有什么理论?

恰好有一种定义的方法将一种类型的一种类型用于C -memcpy

template<class Out, class In, std::enable_if_t<(sizeof(In) == sizeof(Out))>* = nullptr>
Out mangle(const In& in)
{
    Out result;
    std::memcpy(std::addressof(result), std::addressof(in), sizeof(Out));
    return result;
}

int main()
{
    double a = 1.1;
    auto b = mangle<std::uint64_t>(a);
    auto c = mangle<double>(b);
    std::cout << a << " " << std::hex << b << " " << c << std::endl;
}

示例输出:

1.1 3ff199999999999a 1.1

如何读取该64位编号并使用reinterpret_cast将其转换为位等效浮点数。

int64_t a = 121314;
double b = *reinterpret_cast<double*>(&a);
int64_t c = *reinterpret_cast<int64_t*>(&b);
assert(a==c);