任何人都可以帮助我将18位数字字符串数字转换为java中的BigInteger
ie;字符串"0x9999999999999999"
应显示为0x9999999999999999
数值。
答案 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);