2012-08-11 22 views
13

Tengo un número BigInteger y necesito convertirlo a Hexadecimal. Intenté lo siguiente:Cómo convertir el valor de BigInteger a Hex en Java

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

Pero esto no me da el valor correcto después de la conversión. ¿Alguien puede ayudar?

+2

¿Cuál es el valor que se obtiene? ¿Qué valor esperabas? –

+0

Espero que la salida contenga letras. Pero la salida siempre viene en forma de números. –

+0

¿Con qué valor decimal estás tratando? –

Respuesta

10

Debe cambiar

BigInteger toHex=new BigInteger(dec,16); 

a

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

Actualmente le pide al usuario para una Dic-valor y, a continuación, interpretar la entrada como un valor hexadecimal. (. Es por eso que la salida es idéntica a la entrada)

+0

necesito mejorar mi velocidad de escritura –

+0

Ok. Pero, ¿cuál es la diferencia entre escribir: 'String s = toHex.toString (16);' y 'String s = toHex.toString();' ?? –

+0

'toString()' devolverá una representación de base 10 del número, mientras que 'toString (16)' devolverá una representación de base 16 del número. – aioobe

3

Creo que veo el problema:

BigInteger toHex=new BigInteger(dec,16); 

que está convirtiendo el número se escribe en un entero usando la base 16. Intente utilizar 10 aquí.

1

uso

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