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