我试图从其4个复合字节中构建一个32位浮点。有没有更好的(或更便携)的方式来做到这一点比用下面的方法?从其4个复合字节中构建一个32位浮点[C++]
#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;
}
考虑到这是我在Stack Overflow上的第一个问题,我对各种回应感到兴奋。我感谢大家的意见。 – Madgeek 2010-10-21 23:47:59