2010-12-11 3 views

ответ

1

Вы ожидаете, что число будет в шестнадцатеричном виде, как это обычно означает 0x?

Чтобы превратить обычную строку в 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); 
} 
+0

Не уверен, почему существует пониженное голосование, учитывая, что второй пример дает ОП, требуемый для вывода, @Carlos - это единственный другой, который делает. (Он опубликовал позже) –

+0

Это также не учитывает отрицательные значения – TheRealNeo

+0

@TheRealNeo Вы можете привести пример отрицательного шестнадцатеричного значения, которое вы имеете в виду? –

12

Вы можете указать базу в BigInteger конструктора.

BigInteger bi = new BigInteger("9999999999999999", 16); 
String s = bi.toString(16); 
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); 
+0

Следите за отрицательными значениями здесь! – TheRealNeo

Смежные вопросы