java - 无需转换即可按位将 float 转换为 int

标签 java

我正在尝试对一组 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/

相关文章:

java - 为什么 Eclipse 建议我将我的方法设为静态

java - 如何在 Java 桌面应用程序中拥有菜单(网站样式导航链接)

java - docx4j - 删除 wml P 元素

java - 循环继承和接口(interface)——A类不能实现B类接口(interface)而B类实现A接口(interface)

java - 转换为 jSON 时忽略 java bean 字段

java - 从 android 到 mysql 进行查询是否安全?

java - 奇数和偶数 Java 更新之间有什么区别?

java - 如何在hibernate java中的createSQLQuery中使用ilike和%

java - 解码空 xml 元素 jaxb

java - 调整大小时 JDesktopPane 的内容消失 - Java Swing