Converter de binário para hexadecimal

Bom, pessoal, queria saber se alguém tem um código com a conversão de binário para hexadecimal, já consegui fazer todas, de binário para decimal, hexadecimal para binário, hexadecimal para decimal, só não estou conseguindo fazer de binário para hexadecimal. ps.: não pode usar métodos já prontos, como da classe Integer.

Alguém ajuda? obrigado.

Nossa, é uma das mais fáceis. Você pega de 4 em 4 bits, calcula o valor decimal e converte para a letra correspondente em hexa.

Exemplo:

O número: 101001111001111
Fica separado assim: 0101 0011 1100 1111

Agora, cada 4 bits desse vira uma letra hexa:
0101 = 5
0011 = 3
1100 = 12 = C
1111 = 15 = F

Valor hexa: 53CF

[quote=ViniGodoy]Nossa, é uma das mais fáceis. Você pega de 4 em 4 bits, calcula o valor decimal e converte para a letra correspondente em hexa.

Exemplo:

O número: 101001111001111
Fica separado assim: 0101 0011 1100 1111

Agora, cada 4 bits desse vira uma letra hexa:
0101 = 5
0011 = 3
1100 = 12 = C
1111 = 15 = F

Valor hexa: 53CF[/quote]

é, mas isso é quando o número ficava “redondo”, length()%4=0, quando não tinha que acrescentar mais zeros. de qualquer forma, consegui já, obrigado.

Note que no meu exemplo eu acrescentei um 0 a esquerda. Justamente por que o número não encaixava de maneira redonda.

Só uma dúvida que surgiu aqui, eu fiz a divisão certinha em 4 e 4, só que ele no for vai pegando por exemplo: 10100001 dividi-se em 0001 primeiramente, que equivale a 1 e depois o 1010 que equivale a A. eu to usando o méotod append() do stringbuffer, ele pega e concatena ao contrário, dando esse resultado ai como 1A, e não como A1… Como posso fazer para ele concatenar da forma correta para esse caso?

Concatena tudo e no final usa o método reverse() do StringBuffer.

Ou faz o append passando o índice 0.