C++ 如何将大小为 4 的 vector<uint8_t> 转换为 32 位 float

标签 c++ binary uint8t

将大小为 4 的 vector 转换为 32 位 float 的最快方法是什么?

我失败的尝试:

static bool vec2float32(std::vector<uint8_t> bytes, float &result)
{
    if(bytes.size() != 4) return false;
    uint8_t sign = (bytes.at(0) & 0x10000000); //will be 1 or 0
    uint8_t exponent = (bytes.at(0) & 0x01111111);
    uint16_t mantissa = (bytes.at(1) << (2*8)) + (bytes.at(2) << (1*8)) + (bytes.at(3) << (0*8));

    result = (2^(exponent - 127)) * mantissa;
    if(sign == 1) result = result * -1;
    return true;
}

最佳答案

从 vector 中您可以获得指向第一个字节的指针。如果字节的顺序已经正确,那么您可以将字节直接复制到 float 变量中。

关于C++ 如何将大小为 4 的 vector<uint8_t> 转换为 32 位 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51098570/

相关文章:

c++ - 3D 示例中的稳定流体

c++拆分一个字符串

c - 二进制供电给了我错误的结果

c - 二进制序列检测器

swift - 'Int' 与闭包中的 'UInt8' 不同

c++ - 具有不同模板参数的函数返回类型

c++ - 如何用链表重载运算符<<?

matlab - 在 Matlab 中对 float 进行位修改

c++ - uint8_t 不能用 cout 打印

javascript - 如何在 JavaScript 中有效地使用共享缓冲区的类型化数组?