Int -> byte

2 respostas
V
Pessoal preciso implementar uma classe que receba 2 inteiros como argumentos, de forma que formem um numero de 2 digitos (por exemplo newdig(1,2) para o numero 12).


Essa classe devera transformar o numero em byte, mas nao apenas pegar o numero 12 e transforma-lo em byte como 12 = 00001100, mas quebrar o numero em byte em 2 partes de 4 digitos e cada uma deve ser um algoritimo, por exemplo: 1 = 0001 e 2 = 0010 de forma que byte seja igual a 00010010 = 17.


Minhas duvidas sao:





1- Com um numero int de 2 digitos qq, como posso pegar apenas a dezena e a unidade?


2- transformar um int em byte é facil, mas acredito que o seguinte codigo nao vai funcionar:





int numInt = 1;


byte numByte = (byte)numInt;





numByte vai ser igual a 00000001 certo? Mas eu preciso de apenas 4 digitos.





3- caso eu consiga retornar apenas 4 digitos com o byte, como concatena-los em 1 numero byte novamente?








Muito Obrigado

2 Respostas

B
  1. Para pegar apenas a dezena e a unidade, utilize o método braçal: dividir por 10 para pegar a dezena e pegar o módulo (resto) para a unidade.

    2) O tipo primitivo byte nada mais é do que um inteiro de 8 bits, ele não retorna a coisa na forma binária. Para isso você pode usar o método toBinaryString da classe Integer. Aí ele vai colocar só os bytes necessários (não os 8) e você pode completar o que faltar com 0s através de manipulação de String mesmo.
H
Para montar:





byte newdig(int a, int b)


{


  return (byte)((a >> 4) | b);


}





Para desmontar:





byte dezena = (byte)(a >> 4);


byte unidade = (byte)(a & 0x0f);
Criado 21 de março de 2003
Ultima resposta 21 de mar. de 2003
Respostas 2
Participantes 3