Problema sério

7 respostas
Geovani_Martins

Oi pessoal gostaria muito da ajuda de vcs para a resolução de um exercício:
…e o seguinte preciso criar uma subclasse para OutputStream e nela preciso implementar o método
public abstract void write(int b) throws IOException
nesse método eu preciso verificar se o b é um inteiro entre 0 e 255, depois tenho que criar um array de bytes de acordo com o inteiro b. e se b estiver fora dessa faixa, então apenas o byte menos significativo do inteiro deve ser enviado e os três bytes restantes devem ser descartados… alguém poderia me dizer como faço pra encontrar o byte menos significativo de um array de bytes?

…qualquer ajuda é valida! Desde já o meu agradecimento!

7 Respostas

peczenyj

ja pensou em utilizar o tipo de dado byte na assinatura, ao inves de int?

ViniGodoy

Não precisa, basta fazer um cast:

int inteiro = 0xAAAA01; byte x = (byte)inteiro;

Mas, se vc precisasse de outros (como por exemplo os do meio) poderia fazer assim:

int inteiro = 0xAAAA01; byte doMeio = (byte)((inteiro & 0x00FF00) >> 8);

Geovani_Martins

… o problema é que preciso utilizar um inteiro na assinatura. e depois convertê-lo pra um array de bytes após isso descobrir o byte menos significativo do inteiro. Alguem poderia me ajudar?
ViniGodoy e peczenyj obrigado pelas dicas!!

Paulo_Silveira

nao da, eh o contrato da OutputStream.

faça o seguinte: crie uma classe X que extends OutputStream. dentro dela tenha um atributo do tipo ByteArrayOutputStream, e va delegando todo write para o write desse BAOS. no final, quando precisar de todos os bytes, tem um metodo no BAOS que chama toByteArray ou qualquer coisa do genero.

Geovani_Martins

…então quer dizer Paulo que não da pra mim transformar um inteiro em um array de bytes?

dreamspeaker

Porque o cast não serve?

int i = 269; byte b = (byte) i; System.out.println(b);
Ou o que o Viny fez, sei lá. Parece que isso resolve.

ViniGodoy

Resolve sim.
Aqui usamos muito esse tipo de coisa.

Criado 27 de fevereiro de 2008
Ultima resposta 29 de fev. de 2008
Respostas 7
Participantes 5