Essa é outra dica rápida de programação na linguagem Java: como converter uma String representando um número binário, octal ou hexadecimal (e, portanto, que podem conter letras, e não somente números) no inteiro correspondente??
Simples: a classe Integer tem duas sobrecargas do método parseInt: uma recebe somente a String, e supostamente esta String está representando um inteiro em base decimal. A outra recebe a String e a base de cálculo para a conversão. Assim, temos:
Internamente, este método: parseInt(String s) não faz nada além de redirecionar a chamada para a segunda sobrecarga, passando a base 10:
Esta segunda sobrecarga pode receber os valores abaixo como base, usando-os para interpretar a String e fazer a conversão necesária:
Assim, podemos converter binários (usando a base 2), octais (usando a base 8), decimais (usando a base 10) e hexadecimais (usando a base 16), além da não menos esdrúxula base 27.
Exemplos:
Ainda na classe Integer, temos a opção de usar o método valueOf, que tem igualmente duas sobrecargas similares, porém retorna o objeto do tipo Integer de valor correspondente, e não o tipo primitivo. Assim, podemos fazer:
Uma segunda técnica de conversão numérica e de interconversão entre formatos numéricos pode ser obtida na segunda parte deste artigo, clicando-se aqui!!
Espero que esta dica tenha ajudado!! Qualquer coisa: COMENTEM!!!
Simples: a classe Integer tem duas sobrecargas do método parseInt: uma recebe somente a String, e supostamente esta String está representando um inteiro em base decimal. A outra recebe a String e a base de cálculo para a conversão. Assim, temos:
Primeira sobrecarga:
int value = Integer.parseInt("16");
System.out.println(value);
Console:
16
Internamente, este método: parseInt(String s) não faz nada além de redirecionar a chamada para a segunda sobrecarga, passando a base 10:
Segunda sobrecarga:
int value = Integer.parseInt("16", 10);
System.out.println(value);
Console:
16
Esta segunda sobrecarga pode receber os valores abaixo como base, usando-os para interpretar a String e fazer a conversão necesária:
2 - Binário
8 - Octal
10 - Decimal
16 - Hexadecimal
27 - base 27 (alguém usa isso??)
Assim, podemos converter binários (usando a base 2), octais (usando a base 8), decimais (usando a base 10) e hexadecimais (usando a base 16), além da não menos esdrúxula base 27.
Exemplos:
Binário:
Integer.parseInt("10", 2); - retorna 2
Integer.parseInt("101", 2); - retorna 5
Integer.parseInt("1100110", 2); - retorna 102
Octal:
Integer.parseInt("10", 8); - retorna 8
Hexadecimal:
Integer.parseInt("f", 16); - retorna 15
Integer.parseInt("a", 16); - retorna 10
Base 27:
Integer.parseInt("Kona", 27); - retorna 411787
- Outra opção:
Ainda na classe Integer, temos a opção de usar o método valueOf, que tem igualmente duas sobrecargas similares, porém retorna o objeto do tipo Integer de valor correspondente, e não o tipo primitivo. Assim, podemos fazer:
Binário:
Integer i = Integer.valueOf("10", 2);
System.out.println(i.intValue()); - imprime 2
Octal:
Integer i = Integer.valueOf("10", 8);
System.out.println(i.intValue()); - imprime 8
Hexadecimal:
System.out.println(Integer.parseInt("f", 16).intValue());
imprime 15
Uma segunda técnica de conversão numérica e de interconversão entre formatos numéricos pode ser obtida na segunda parte deste artigo, clicando-se aqui!!
Espero que esta dica tenha ajudado!! Qualquer coisa: COMENTEM!!!
Um comentário:
blz dessa forma roda tranquilo
agora eu estou com um problema o seguinte eu quero que o usuário digite um valor qualquer decimal e converta para binário ou seja em vez de declarar o decimal ou o binário dentro do código, eu quero que o usuário digite um valor e o sistema converta, isso é possível?
Postar um comentário