我需要读取文件的二进制内容并将提取的字节转换为单精度浮点数。如何做到这一点已经在这里被问到了。该问题确实有正确的答案,但我想知道特定答案是否实际上是有效的 C++ 代码。
该答案给出了以下代码:
float bytesToFloat(uint8_t *bytes, bool big_endian) {
float f;
uint8_t *f_ptr = (uint8_t *) &f;
if (big_endian) {
f_ptr[3] = bytes[0];
f_ptr[2] = bytes[1];
f_ptr[1] = bytes[2];
f_ptr[0] = bytes[3];
} else {
f_ptr[3] = bytes[3];
f_ptr[2] = bytes[2];
f_ptr[1] = bytes[1];
f_ptr[0] = bytes[0];
}
return f;
}
这实际上是有效的 C++ 代码吗?我不确定它是否违反任何别名规则。
请注意,我的目标是具有大端序的平台,其中浮点数保证至少为 32 位长。