Sou iniciante Java e estou em um grande dilema; preciso criar um programa que converta números binários para hexadecimal

Já revirei a internet, procurei em livros e nada me ajudou muito.
Até agora consegui criar apenas isso.
obs: como estou criando um projeto, algumas variáveis aí estão sendo utilizadas para outras partes.

public static void main(String[] args) {
Scanner in = new Scanner (System.in);
String numeroc = “”;
String binario = “”;
int numeroi = 0, escolhaBase, escolha, potencia = 0, hexa = 0;
int resultado = 0;
int resultadoAux = 0;
char resultadoHexa = ‘a’;

System.out.println(“BASE 2 PARA 16”);
System.out.println(“Digite o número binário para a conversão”);
numeroc = in.next();

        for(int i = numeroc.length()-1; i >= 0; i--){
            
       resultado += Math.pow(2, potencia) * 
                Character.getNumericValue(numeroc.charAt(i));
        
       potencia++;
        
       }
        
        if(resultado == 10){
        resultadoHexa = 'A';
        System.out.print(resultadoHexa+"\n");
        }else if(resultado == 11){
        resultadoHexa = 'B';
        System.out.print(resultadoHexa+"\n");
        }else if(resultado == 12){
        resultadoHexa = 'C';
        System.out.print(resultadoHexa+"\n");
        }else if(resultado == 13){
        resultadoHexa = 'D';
        System.out.print(resultadoHexa+"\n");
        }else if(resultado == 14){
        resultadoHexa = 'E';
        System.out.print(resultadoHexa+"\n");
        }else if(resultado == 15){
        resultadoHexa = 'F';
        System.out.print(resultadoHexa+"\n");
        }else{
         System.out.println(resultado+"\n");
        }

Estou tentando achar um jeito pra poder pegar os números binários de 4 em 4 pra poder fazer os cálculos e converter.

Desculpe se cometi algum erro básico, ou postei em lugar indevido, sou iniciante tanto no site como em java… XD
Obrigado.

Acho que assim dá:

class Programa {
    public static void main(String[] args) {
        String bin = (new Scanner(System.in)).nextLine(); // pega a linha em binário
        int dec    = Integer.parseInt(bin, 2);            // converte pra inteiro em base 2
        String hex = Integer.toString(dec, 16);           // converte pra String já como base 16

        System.out.println( "Binary : " + bin );
        System.out.println( "Decimal: " + dec );
        System.out.println( "Hex    : " + hex );
    }
}

Encontrei aqui: https://stackoverflow.com/a/25592110/3334365

Pra achar outras possíveis soluções, pesquise por “Java binary to hex” que tem bastante coisa.


E pra quebrar a String vc poderia usar isso:

class Programa {
    public static void main(String[] args) {
        String s = "101010111100";
        System.out.println( Arrays.toString(s.split("(?<=\\G....)")) );
    }
}

Mas vc teria que encontrar uma forma de ver se s.length() retorna um múltiplo de 4 e se não, completar com zeros à esquerda. Achei aqui: https://stackoverflow.com/a/2297450/3334365

1 curtida

Olha amigo, esse app aqui pode acabar facilitando muito sua vida