【问题标题】:How to convert byte array to unsigned 128 bit integer in Java?如何在 Java 中将字节数组转换为无符号 128 位整数?
【发布时间】:2015-03-25 11:19:04
【问题描述】:

我正在尝试使用 MD5 对字符串进行哈希处理。我需要将哈希值作为 Java 中的 128 位无符号整数。

MessageDigest md = MessageDigest.getInstance("MD5");

String toHash = "HashThis";
md.update(toHash.getBytes());
byte[] isHashed = md.digest();

如何将 isHashed 转换为整数?

【问题讨论】:

    标签: java bytearray md5 unsigned-integer


    【解决方案1】:

    Java 没有 128 位的 int 类型。但它有一个 BigInteger 类,它有一个构造函数,它接受一个符号和一个表示为 byte[] 的量值,根据您的需要。

    BigInteger value=new BigInteger(1,isHashed);
    

    【讨论】:

      【解决方案2】:

      使用BigInteger

      BigInteger value = new BigInteger(isHashed);

      为确保结果值为正(因为字节数组应为 2 的补码),请确保最高有效位为零。这可以通过使数组 1 元素更大,第一个字节为 0 来轻松实现。

      【讨论】:

      • 好吧,它假设字节数组是二进制补码,所以你可以在数组的第一个字节添加一个零字节来保证它。
      • 最好将该评论的文本添加到答案中,否则它可能会在 VLQ 审核队列中被关闭....
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      相关资源
      最近更新 更多