我正在尝试将浮点数直接转换为无符号整数,而无需任何隐式转换数学,(所以不是 C 样式或静态转换)只是将字节直接复制到另一个。在 Windows Visual Studio 2015 中,浮点数和无符号整数的大小是相同的(4 个字节),所以我认为这没有任何问题。. . 我想出了一个解决方案,但必须有更好的方法来做我想做的事。
unsigned int x = 3;
float y = 2.4565;
*reinterpret_cast<float*>(&x) = y;
这就是我想要的并将 X 设置为 1075656524。
如果有的话,我更喜欢跨平台的解决方案。我知道类型的大小可能因平台而异,所以这可能是不可能的。
编辑:为了澄清,我希望将浮点数的所有字节都复制到 unsigned int 中不变。存储在浮点数中的每一位都应该存储在无符号整数中。还有不使用 memcpy 的解决方案吗?我想避免使用已弃用的功能。