2011-04-22 11 views
7

Estoy tratando de traducir una cadena que contiene un valor binario (por ejemplo 000010001010011) a su valor hexadecimal. (453)Traducción de una cadena que contiene un valor binario a Hex

He estado tratando de varias opciones, pero sobre todo Obtengo un valor convertido de cada personaje individual. (0 = 30 1 = 31)

Tengo una función que traduce mi entrada al código binario de una manera no matemática, pero a través de una serie de instrucciones "if, else if". (Los valores no se calcula, ya que no son estándar.) El código binario está contenida en una cadena variable "binOutput"

Actualmente tengo algo como esto:

 String bin = Integer.toHexString(Integer.parseInt(binOutput)); 

Pero esto no funciona en todas.

+0

Wow, yo chicos son rápidos! ¡Y funciona! ¡Gracias! Pero tengo 1 problema restante ... cuando los números son más grandes, parece que no funciona (por ejemplo, "1011000010001010011101010110110011001000010011111" debe convertirse en 16114EAD9909F) – Yuri

+0

El problema es que el valor no cabe en un 'int'. Pruebe 'String bin = Long.toHexString (Long.parseLong (binOutput, 2));' Si se hace demasiado grande incluso por un tiempo prolongado (64 bits), entonces tendrá que dividir 'binOutput' en cadenas más pequeñas y hacer cada pieza por separado. –

+0

@Ted gracias! eso soluciona el problema – Yuri

Respuesta

17

Intente utilizar Integer.parseInt(binOutput, 2) en lugar de Integer.parseInt(binOutput)

+0

Buena respuesta, gracias, ¿y si quiero que "00000001" salga como "01", no solo como "1"? – RRTW

+0

@RRTW - ¿Está preguntando sobre el problema inverso: convertir un valor entero en una cadena? Esto se puede hacer de varias formas: 'Integer.toString()', 'String.format', y algunos otros. Su requisito no está claro. ¿Siempre quieres un cero inicial? ¿Siempre quieres al menos dos dígitos? ¿Algo más? –

+0

Sí, quiero el cero principal siempre :-), como sugerencia, intentaré hacer esto con String.format, gracias ~ – RRTW

2

Ted Hopp se me adelantó, pero aquí va de todos modos:

[email protected]:/tmp$ cat test.java; java test 000010001010011 
public class test { 
public static void main(String[] args) { 
    for (int i = 0; i < args.length; i++) { 
    System.out.println("The value of " + args[i] + " is " + 
    Integer.toHexString(Integer.parseInt(args[i], 2))); 
    } 
} 
} 
The value of 000010001010011 is 453 
Cuestiones relacionadas