如何将18位数字字符串转换为BigInteger?

时间:2010-12-11 12:07:43

标签: java biginteger

任何人都可以帮助我将18位数字字符串数字转换为java中的BigInteger

ie;字符串"0x9999999999999999"应显示为0x9999999999999999数值。

4 个答案:

答案 0 :(得分:12)

您可以在BigInteger构造函数中指定基础。

BigInteger bi = new BigInteger("9999999999999999", 16);
String s = bi.toString(16);   

答案 1 :(得分:2)

如果字符串始终以“0x”开头并且是十六进制的:

    String str = "0x9999999999999999";
    BigInteger number = new BigInteger(str.substring(2));

更好,检查它是否以“0x”开头

  String str = "0x9999999999999999";
  BigInteger number;
  if (str.startsWith("0x")) {
      number = new BigInteger(str.substring(2), 16);
  } else {
      // Error handling: throw NumberFormatException or something similar
      // or try as decimal: number = new BigInteger(str);
  }

将其输出为十六进制或转换为十六进制表示形式:

    System.out.printf("0x%x%n", number);
    // or
    String hex = String.format("0x%x", number);

答案 2 :(得分:1)

你期望这个数字是十六进制的,因为这通常意味着什么?

将普通字符串转换为BigInteger

BigInteger bi = new BigInteger(string);
String text = bi.toString();

将十六进制数字作为文本转换为BigInteger并返回。

if(string.startsWith("0x")) {
    BigInteger bi = new BigInteger(string.sustring(2),16);
    String text = "0x" + bi.toString(16);
}

答案 3 :(得分:0)

BigInteger bigInt = new BigInteger("9999999999999999", 16);