Java 如何将18位数字字符串转换为BigInteger?
有人能帮我在java中将18位字符串数字转换成BigInteger吗Java 如何将18位数字字符串转换为BigInteger?,java,biginteger,Java,Biginteger,有人能帮我在java中将18位字符串数字转换成BigInteger吗 ie;字符串“0x9999999999999999”应显示为0x9999999999999数值。是否希望数字为十六进制,因为这是0x通常的意思 将普通字符串转换为BigInteger的步骤 BigInteger bi = new BigInteger(string); String text = bi.toString(); 将十六进制数作为文本转换为大整数并返回 if(string.startsWith("0x")) {
ie;字符串
“0x9999999999999999”
应显示为0x9999999999999
数值。是否希望数字为十六进制,因为这是0x通常的意思
将普通字符串转换为BigInteger的步骤
BigInteger bi = new BigInteger(string);
String text = bi.toString();
将十六进制数作为文本转换为大整数并返回
if(string.startsWith("0x")) {
BigInteger bi = new BigInteger(string.sustring(2),16);
String text = "0x" + bi.toString(16);
}
可以在BigInteger构造函数中指定基
BigInteger bi = new BigInteger("9999999999999999", 16);
String s = bi.toString(16);
如果字符串始终以“0x”开头且为十六进制:
String str = "0x9999999999999999";
BigInteger number = new BigInteger(str.substring(2));
最好检查它是否以“0x”开头
要将其输出为十六进制或转换为十六进制表示形式,请执行以下操作:
System.out.printf("0x%x%n", number);
// or
String hex = String.format("0x%x", number);
由于第二个例子产生了要求输出的OP,不确定为什么会有反对票,@Carlos是唯一一个这样做的人。(他后来发表)这也不算负面。values@TheRealNeo你能举一个十六进制负数的例子吗?在表示为字符串的数字前面加一个符号是合法的。例如,您可以执行新的BigInteger(“-a”,16)或新的BigInteger(“+a”,16),通过扩展,数字可以表示为“-0xa”或“+0xa”。听起来使用regexp可以更有效地解决这个问题(用户也可以使用0X作为前缀,…。@因此,更常见的是表示负数,如-1的0xFFFFFF。你可以加一个符号,但我不认为它被广泛使用。注意这里的负值!
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);