2012-08-11 13 views
13

Mam numer BigInteger i muszę go przekonwertować na szesnastkowy. Próbowałem:Jak przekonwertować wartość BigInteger na Hex w Javie

String dec = null; 
    System.out.println("Enter the value in Dec: "); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    dec = br.readLine(); 
    BigInteger toHex=new BigInteger(dec,16); 
    String s=toHex.toString(16); 
    System.out.println("The value in Hex is: "+ s); 

Ale to nie daje mi poprawnej wartości po konwersji. Czy ktokolwiek może pomóc.

+2

Jaka jest wartość dostać? Jaką wartość oczekiwałeś? –

+0

Oczekuję, że dane wyjściowe zawierają litery. Ale wyniki przychodzą zawsze jako liczby. –

+0

Z jaką wartością dziesiętną próbujesz? –

Odpowiedz

10

należy zmienić

BigInteger toHex=new BigInteger(dec,16); 

do

BigInteger toHex=new BigInteger(dec,10); 
            ^

Obecnie poprosić użytkownika o gru-wartości, a następnie zinterpretować jako wejście hex wartości. (. Dlatego wyjście jest identyczna z wejściem)

+0

Potrzebuję poprawić moją szybkość pisania –

+0

Ok. Ale jaka jest różnica między pisaniem: 'String s = toHex.toString (16);' i 'String s = toHex.toString();' ?? –

+0

'toString()' zwróci reprezentację liczby 10 w podstawie, podczas gdy 'toString (16)' zwróci reprezentację liczby 16 w podstawie. – aioobe

3

Chyba widzę problemu:

BigInteger toHex=new BigInteger(dec,16); 

konwertowania numer wpisywany do liczby całkowitej korzystając bazową 16. Spróbuj użyć 10 tutaj.

1

użycie

BigInteger toHex=new BigInteger(dec,10); 
1
String hexValue = "FFF"; 
    System.out.println("HexaDecimal Value :"+hexValue); 
    BigInteger bigint = new BigInteger(hexValue ,16); 
    System.out.println("Big Int Value :"+bigint); 
    BigInteger s = new BigInteger("4"); 
    bigint = bigint.add(s); 
    System.out.println("After Addition :"+bigint); 
    String hexNewValue = bigint.toString(16); 
    System.out.println("HexaDecimal Value after Addition :"+hexNewValue); 
Powiązane problemy