我试图校验一系列浮点数。因此我想按顺序将它们转换为整数。有没有快速的方法可以自行操作字节?
答案 0 :(得分:6)
您可以使用Float.floatToRawIntBits()
获取float
的内部按位表示形式。然后,您可以使用返回的int
创建校验和:
int checksum = 0;
for (float value : floatArray) {
checksum += Float.floatToRawIntBits(value);
}
根据您的使用情况,您还可以使用Float.floatToIntBits()
为所有0x7fc00000
值返回规范值NaN
。
对于校验和计算本身,我采用了最简单的方法来总结这些值。有更好的校验和算法,对于特定的翻转位模式更加健壮 - 一旦你有int
值,就可以将它们与你喜欢的任何校验和算法一起使用(CRC,MD5,SHA2或其他)。
有关详细信息,请参阅示例