Tôi đang cố gắng tạo ra một phao 32 bit trong số 4 byte tổng hợp của nó. Có cách nào tốt hơn (hoặc di động hơn) để làm điều này hơn với phương pháp sau đây?Xây dựng một phao 32 bit ra khỏi 4 byte tổng hợp [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;
}
Xem xét đây là câu hỏi đầu tiên của tôi về Stack Overflow, tôi vui mừng trước các phản hồi khác nhau. Tôi cảm ơn tất cả mọi người cho đầu vào của họ. – Madgeek