*/
public static int converteBinarioParaDecimal(String valorBinario) {
int valor = 0;
// soma ao valor final o dígito binário da posição * 2 elevado ao contador da posição (começa em 0)
for (int i=valorBinario.length(); i>0; i--) {
valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));
}
return valor;
}
De binário para octal temos:
/**
public static String converteBinarioParaOctal(String binario) {
StringBuilder sb = new StringBuilder();
int posicaoInicial = 0;
int posicaoFinal = 0;
// começa a pegar grupos de 3 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String
posicaoInicial = binario.length();
posicaoFinal = posicaoInicial;
while (posicaoInicial > 0) {
// pega de 3 em 3 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 3 caracteres, pega os restantes (1 ou 2)
posicaoInicial = ((posicaoInicial - 3) >= 0) ? posicaoInicial - 3 : 0;
/*
* Converte binário para decimal (de 0 a 7) que vai ser o mesmo caractere em octal e insere no início da String de retorno. Utilize o método
* converteBinarioParaDecimal(String) mais acima.
*/
sb.insert(0, converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal)));
posicaoFinal = posicaoInicial;
}
return sb.toString();
}
De binário para hexadecimal temos:
/**
public static String converteBinarioParaHexadecimal(String binario) {
char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
StringBuilder sb = new StringBuilder();
int posicaoInicial = 0;
int posicaoFinal = 0;
char caractereEncontrado = '-';
// começa a pegar grupos de 4 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String
posicaoInicial = binario.length();
posicaoFinal = posicaoInicial;
while (posicaoInicial > 0) {
// pega de 4 em 4 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 4 caracteres, pega os restantes (1, 2 ou 3)
posicaoInicial = ((posicaoInicial - 4) >= 0) ? posicaoInicial - 4 : 0;
/*
* Transforma o grupo de 4 caracteres em um dígito hexadecimal. Primeiro converte o grupo de 4 (ou menos) caracteres em decimal e depois pega
* o caractere correspondente no array de hexadecimais. Utilize o método converteBinarioParaDecimal(String) mais acima.
*/
caractereEncontrado = hexa[converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal))];
// insere no início da String de retorno
sb.insert(0, caractereEncontrado);
posicaoFinal = posicaoInicial;
}
return sb.toString();
}
Fonte: https://pablonobrega.wordpress.com/2013/05/30/conversao-de-numeros-entre-bases-binario-decimal-octal-hexadecimal/
De binário para decimal temos o seguinte algoritmo:
*/
public static int converteBinarioParaDecimal(String valorBinario) {
int valor = 0;
// soma ao valor final o dígito binário da posição * 2 elevado ao contador da posição (começa em 0)
for (int i=valorBinario.length(); i>0; i--) {
valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));
}
return valor;
}
De binário para octal temos:
/**
public static String converteBinarioParaOctal(String binario) {
StringBuilder sb = new StringBuilder();
int posicaoInicial = 0;
int posicaoFinal = 0;
// começa a pegar grupos de 3 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String
posicaoInicial = binario.length();
posicaoFinal = posicaoInicial;
while (posicaoInicial > 0) {
// pega de 3 em 3 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 3 caracteres, pega os restantes (1 ou 2)
posicaoInicial = ((posicaoInicial - 3) >= 0) ? posicaoInicial - 3 : 0;
/*
* Converte binário para decimal (de 0 a 7) que vai ser o mesmo caractere em octal e insere no início da String de retorno. Utilize o método
* converteBinarioParaDecimal(String) mais acima.
*/
sb.insert(0, converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal)));
posicaoFinal = posicaoInicial;
}
return sb.toString();
}
De binário para hexadecimal temos:
/**
public static String converteBinarioParaHexadecimal(String binario) {
char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
StringBuilder sb = new StringBuilder();
int posicaoInicial = 0;
int posicaoFinal = 0;
char caractereEncontrado = '-';
// começa a pegar grupos de 4 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String
posicaoInicial = binario.length();
posicaoFinal = posicaoInicial;
while (posicaoInicial > 0) {
// pega de 4 em 4 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 4 caracteres, pega os restantes (1, 2 ou 3)
posicaoInicial = ((posicaoInicial - 4) >= 0) ? posicaoInicial - 4 : 0;
/*
* Transforma o grupo de 4 caracteres em um dígito hexadecimal. Primeiro converte o grupo de 4 (ou menos) caracteres em decimal e depois pega
* o caractere correspondente no array de hexadecimais. Utilize o método converteBinarioParaDecimal(String) mais acima.
*/
caractereEncontrado = hexa[converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal))];
// insere no início da String de retorno
sb.insert(0, caractereEncontrado);
posicaoFinal = posicaoInicial;
}
return sb.toString();
}
Fonte: https://pablonobrega.wordpress.com/2013/05/30/conversao-de-numeros-entre-bases-binario-decimal-octal-hexadecimal/
De binário para decimal temos o seguinte algoritmo:
*/
public static int converteBinarioParaDecimal(String valorBinario) {
int valor = 0;
// soma ao valor final o dígito binário da posição * 2 elevado ao contador da posição (começa em 0)
for (int i=valorBinario.length(); i>0; i--) {
valor += Integer.parseInt(valorBinario.charAt(i-1)+"")*Math.pow(2, (valorBinario.length()-i));
}
return valor;
}
De binário para octal temos:
/**
public static String converteBinarioParaOctal(String binario) {
StringBuilder sb = new StringBuilder();
int posicaoInicial = 0;
int posicaoFinal = 0;
// começa a pegar grupos de 3 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String
posicaoInicial = binario.length();
posicaoFinal = posicaoInicial;
while (posicaoInicial > 0) {
// pega de 3 em 3 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 3 caracteres, pega os restantes (1 ou 2)
posicaoInicial = ((posicaoInicial - 3) >= 0) ? posicaoInicial - 3 : 0;
/*
* Converte binário para decimal (de 0 a 7) que vai ser o mesmo caractere em octal e insere no início da String de retorno. Utilize o método
* converteBinarioParaDecimal(String) mais acima.
*/
sb.insert(0, converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal)));
posicaoFinal = posicaoInicial;
}
return sb.toString();
}
De binário para hexadecimal temos:
/**
public static String converteBinarioParaHexadecimal(String binario) {
char[] hexa = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
StringBuilder sb = new StringBuilder();
int posicaoInicial = 0;
int posicaoFinal = 0;
char caractereEncontrado = '-';
// começa a pegar grupos de 4 dígitos da direita para a esquerda, por isso posicaoInicial e posicaoFinal ficam na posição de fim da String
posicaoInicial = binario.length();
posicaoFinal = posicaoInicial;
while (posicaoInicial > 0) {
// pega de 4 em 4 caracteres da direita para a esquerda. Se o último grupo à esquerda tiver menos de 4 caracteres, pega os restantes (1, 2 ou 3)
posicaoInicial = ((posicaoInicial - 4) >= 0) ? posicaoInicial - 4 : 0;
/*
* Transforma o grupo de 4 caracteres em um dígito hexadecimal. Primeiro converte o grupo de 4 (ou menos) caracteres em decimal e depois pega
* o caractere correspondente no array de hexadecimais. Utilize o método converteBinarioParaDecimal(String) mais acima.
*/
caractereEncontrado = hexa[converteBinarioParaDecimal(binario.substring(posicaoInicial, posicaoFinal))];
// insere no início da String de retorno
sb.insert(0, caractereEncontrado);
posicaoFinal = posicaoInicial;
}
return sb.toString();
}
Fonte: https://pablonobrega.wordpress.com/2013/05/30/conversao-de-numeros-entre-bases-binario-decimal-octal-hexadecimal/
Para escrever sua resposta aqui, entre ou crie uma conta.
Compartilhar