Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将18位数字字符串转换为BigInteger?_Java_Biginteger - Fatal编程技术网

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")) {

有人能帮我在java中将18位字符串数字转换成BigInteger吗


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);