相关疑难解决方法(0)

从4个复合字节构建一个32位浮点数

我正在尝试用4个复合字节构建一个32位浮点数.有没有比使用以下方法更好(或更便携)的方法?

#include <iostream>

typedef unsigned char uchar;

float bytesToFloat(uchar b0, uchar b1, uchar b2, uchar b3)
{
    float output;

    *((uchar*)(&output) + 3) = b0;
    *((uchar*)(&output) + 2) = b1;
    *((uchar*)(&output) + 1) = b2;
    *((uchar*)(&output) + 0) = b3;

    return output;
}

int main()
{
    std::cout << bytesToFloat(0x3e, 0xaa, 0xaa, 0xab) << std::endl; // 1.0 / 3.0
    std::cout << bytesToFloat(0x7f, 0x7f, 0xff, 0xff) << std::endl; // 3.4028234 × 10^38  (max single precision)

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ floating-point portability endianness single-precision

21
推荐指数
4
解决办法
4万
查看次数

如何将 64 位地址的 std::string 表示形式转换为 uint64_t?

我有一个std::string以小端十六进制形式表示的 64 位内存地址。如何将其转换为uint64_t表示?

c++

4
推荐指数
1
解决办法
4583
查看次数