Bom dia gostaria de saber se e possivel criar um programa em java que me diponibilize os codigos binario decimal e hexadecimal.
Estou estudando intalação e gestao de redes informatica sei que e totalmente diferente de programação.
Tenho umas noções em programação java por isso resolvi tentar fazer um programa que quando eu colocar um codigo binario o programa me de o codigo decimal e hexadecimal sera que e possivel sei que e um pouco dificil, mas acho que vale apena tentar.
Gostaria que me ajudacem nesse quebra cabeça
Por que estou estudando sistemas de numeração ( binario, decimal, Hexadecimal )e quero poder transportar isso para um programa em java.
A função String.format já tem formações específicas para hexadecimal e octal.
A função Integer.parseInt possui uma assinatura que converte um número em qualquer base, para um número em decimal.
Se quiser fazer na mão, é possível usar os operadores de bits (&), ou o de resto (%).
Mas, já que você estuda redes, talvez o mais interessante mesmos seja baixar o Wireshark.
A classes Integer já possui os métodos toBinaryString, toHexString e toOctalString que recebem um decimal e retornam uma String com o número nas bases citadas. Por retornar String vc não pode manipulá-los.
Para fazer o contrário, representar um hex vc deve simplesmente ler um numero com 0x na frente, ou seja, 0xF é a representaçao de 15 em hex. O mesmo vale para octal (colocando-se 0 na frente do número). Só não sei como fazer para binário. Se alguem souber… Esta forma não funciona se vc tiver lendo pelo teclado, apenas para valores já definidos no seu código.
A própria classe Integer possui o método parseInt que quando passado como parâmetro uma string com o valor na devida base e a base retorna o correspondente em decimal.
Veja se o seguinte trecho de código ajuda:
[code]import java.util.Scanner;
public class Inicial {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Digite um número em decimal: ");
int numDecimal = entrada.nextInt();//lê o número
System.out.println("Valor em binário: " + Integer.toBinaryString(numDecimal));
System.out.println("Valor em hex: " + Integer.toHexString(numDecimal));
System.out.println("Valor em octal: " + Integer.toOctalString(numDecimal));
System.out.println("Digite a base: ");
int base = entrada.nextInt();//lê a base
System.out.print("Digige o número na base escolhida: ");
int numEmQualquerBase = Integer.parseInt(entrada.next(),base);
System.out.println("Representação em decimal: " + numEmQualquerBase);
}
Em binário só existe a partir do Java 7. É bom ressaltar que você está falando aqui de declaração de literais (ou seja, números dentro do código). Por exemplo:
int x = 10; //Valor de x = 10 decimal
int y = 0xFF; //Valor de y = 255 decimal
int z = 0b1010_1010; //Java 7: Valor de z = 170 decimal. Os _ são ignorados.