我正在尝试对一组 float 进行校验和。因此我想将它们按位转换为整数。有什么快速的方法可以避免我自己操作字节吗?
最佳答案
您可以使用 Float.floatToRawIntBits()
获取 float
的内部按位表示.然后,您可以使用返回的 int
创建校验和:
int checksum = 0;
for (float value : floatArray) {
checksum += Float.floatToRawIntBits(value);
}
根据您的用例,您还可以使用 Float.floatToIntBits()
它返回所有 NaN
值的规范值 0x7fc00000
。
至于校验和计算本身,我采用了最简单的方法,即对值求和。有更好的校验和算法,它们对特定的翻转位模式更健壮——一旦你有了 int
值,你就可以将它们与你喜欢的任何校验和算法(CRC、MD5、SHA2 或其他)一起使用.
有关详细信息,请参阅示例
关于java - 无需转换即可按位将 float 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36606203/