Saltar al contenido
Portada » Conversión binario a hexadecimal en Java

Conversión binario a hexadecimal en Java

Distintos algoritmos para convertir binario a hexadecimal en Java. El sistema numérico hexadecimal se codifica en 16 elementos. Estos 16 elementos consisten en 10 dígitos (0-1) y 6 letras (A-F). Un número hexadecimal puede derivarse de un binario agrupando 4 dígitos que equivalgan a un carácter hexadecimal. Ejemplos:

Binario: 11011111 --> Hexadecimal: DF
Binario: 10001101 --> Hexadecimal: 8D

Para hacer la conversión a hexadecimal vamos a utilizar dos aproximaciones:

  • Usando el método toHexString() nativo de Java.
  • Sucesivamente recogiendo el resto y dividiendo el número decimal convertido por 16.

Primera Aproximación: toHexString()

La sintaxis de la función toHexString() es la siguiente:

public static String toHexString(int num)

El algoritmo de este método es como sigue:

  • Convierte el número binario en decimal.
  • Para convertir el número binario en decimal primero se extrae cada dígito cogiendo cada resto dividiendo entre 10.
  • A continuación, se multiplica este dígito con potencias incrementales en base 2.
  • Continuas dividiendo el número binario original por 10 para eliminar el último dígito en cada iteración.
  • Tras tener el número decimal, usa el método toHexString() para tener la salida deseada.

class BinarioAHexadecimal {


	int binarioADecimal(long binario)
	{


		int numeroDecimal = 0, i = 0;

		while (binario > 0) 
                 {
			numeroDecimal += Math.pow(2, i++) * (binario % 10);
			binario /= 10;
		}

		return numeroDecimal ;
	}

	String decimalAHexadecimal(long binario)
	{

		int numeroDecimal = binarioADecimal(binario);

		String numeroHexadecimal = Integer.toHexString(numeroDecimal );

		numeroHexadecimal = numeroHexadecimal .toUpperCase();

		return numeroHexadecimal ;
	}

	public static void main(String[] args)
	{

		// instantiating the class
		BinarioAHexadecimal binarioADecimal = new BinarioAHexadecimal();

		long numero= 10011110;
	
		System.out.println("Numero de entrada : " + numero);
		System.out.println(binarioADecimal.decimalAHexadecimal(numero));
	}
}

Segunda Aproximación: conversión a decimal

En esta aproximación también convertiremos el número binario en decimal. Entonces dividiremos sucesivamente recogiendo el resto de este número decimal para recoger el único carácter para cada conjunto de 4 dígitos que había en el número binario original.

Los pasos del algoritmo son los siguientes:

  • Convertir el binario a decimal usando los pasos 2-4 del algoritmo anterior.
  • Ejecutar un bucle while hasta que el número decimal sea cero mientras se divide en cada iteración entre 16.
  • En cada iteración se recoge el resto de dividir entre 16.
  • Se forma una cadena añadiéndole los caracteres que son el resto de haber dividido por 16.
  • Si el resto es igual o mayor a 10, se reemplaza por la letra correspondiente A-F.
class BinarioAHexadecimal{
 
  
    int binarioADecimal(long binario)
    {
 

        int numeroDecimal = 0, i = 0;

        while (binario > 0) {

            numeroDecimal += Math.pow(2, i++) * (binario % 10);
 
            binario /= 10;
        }

        return numeroDecimal;
    }

    String decimalAHexadecimal(long binario)
    {
 
        int numeroDecimal = binarioADecimal(binario);
 
        char letras[] = { 'A', 'B', 'C', 'D', 'E', 'F' };
 
        int resto, i = 0;
 

        String numeroHex= "";
 
        while (numeroDecimal != 0) {
 
            resto = numeroDecimal% 16;
 
            if (resto >= 10)
                hexNumber = letras[resto - 10] + numeroHex;
           
            else
                numeroHex= resto + numeroHex;

            numeroDecimal /= 16;
        }
 
        return numeroHex;
    }
 
    public static void main(String[] args)
    {
 
        BinarioAHexadecimal binarioAHex = new BinarioAHexadecimal();
 
        long numero =11000011;
       
 
        System.out.println("Entrada: "+numero);
        System.out.println("Salida : " +binarioAHex.decimalAHexadecimal(numero));
    }
}

Más algoritmos matemáticos

AlgoritmoDescripción
Sucesión de FibonacciAprende a programar en Java la famosa sucesión de Fibonacci
Números PrimosAlgoritmo de cálculo en Java para saber si un número es primo
FactorialCálculo del factorial de un número en Java
Número PiAprende a calcular Pi en Java
Número eNúmero e, algoritmo en Java
Raíz cuadradaDesarrollo en Java del algoritmo raíz cuadrada
Números PerfectosDetermina en Java si un número es “perfecto”
Conversión binario – hexadecimalConversor binario a hexadecimal en Java
Generación de números aleatoriosGenerar números aleatorios entre 1 y 100, ejemplos prácticos
Matrices en JavaCrea una matriz en Java y manéjala con soltura
Calculadora en JavaEjemplo sencillo para montar una calculadora en java con interfaz básica

Recursos básicos Java

AsuntoDescripción
Tutorial básico y sintaxisTutorial básico Java y sintaxis. Aprende los fundamentos del lenguaje.
Hilos (Threads)Aprende a manejar hilos y las cuestiones básicas de la concurrencia
Funciones LambdaAquí te enseñamos las nociones más importantes para arrancas con funciones lambda
PalíndromosPrograma de ejemplo para el uso de palíndromos en Java.
Máquina Virtual de JavaTe explicamos el funcionamiento de la máquina virtual de java (Java Virtual Machine – JVM)
JDK, JRE y JVMDiferencias entre el JDK, JRE y JVM.
Mejores libros Java en EspañolHazte con los mejores libros Java para aprender paso a paso y profundizar en las mejores prácticas
TensorFlowManejo del API de TensorFlow para la construcción de grafos de operaciones y su ejecución
Tutorial Log4jTutorial para el manejo de Log4j, herramienta ágil y flexible para la gestión de Logs en Java
Java SecurityEntiende y aplica las posibilidades que da Java para mantener la seguridad
Tutorial JConsoleAprende los conceptos básicos de monitorización de procesos Java con JConsole
JavaFXTutorial de JavaFX, librería gráfica moderna para construcción de GUIs en móvil, escritorio y web.
Estructuras de datos en JavaExplicación y ejemplos de las estructuras de datos más importantes: listas, pila, cola, arbol.
JavaapiConjunto de clases, interfaces, métodos y paquetes que forman parte de la plataforma Java estándar
Algoritmo HuffmanMétodo eficiente para codificar datos, asignando códigos más cortos a los caracteres más frecuentes