【问题标题】:Converting 64-bit unsigned int (in hex string form) to decimal in java在java中将64位无符号整数(十六进制字符串形式)转换为十进制
【发布时间】:2014-09-26 21:24:50
【问题描述】:

我有一个表示 64 位无符号整数的十六进制字符串。

我想在 java 中将其转换为十进制表示。

我想使用Long.parseLong("HexString", 16);,但在 java 中最左边的位是符号位,任何大于 2^31-1 的数字都不适合。

那么我如何转换和存储这些数据?

谢谢, 晴天

【问题讨论】:

    标签: java long-integer unsigned


    【解决方案1】:

    您可以使用constructor that takes a String and an int radix 创建BigInteger

    BigInteger bigInt = new BigInteger(hexString, 16);
    

    如果您有 Java 8,则可以使用 Long.parseUnsignedLong,这将允许您解析所有 64 位,即使设置了通常将其置于 Long.MAX_VALUE 之上的位。它仍然返回一个long,在Java 中它仍然是有符号的,但它会被解析为一个无符号的long

    long stillSigned = Long.parseUnsignedLong(hexString, 16);
    

    如果解析的值是负数,那么真正的无符号值是有符号值+264

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 1970-01-01
      • 2015-11-29
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多