[RESOLVIDO] Ler e escrever unsigned short num array de 2 bytes

2 respostas
eliangela

Olá pessoal!

Estou com o seguinte desafio:
Preciso ler um arquivo e pegar 2 bytes desse arquivo e transformar num unsigned short. Preciso gravar tambem do 0 ao 65536. Não pode ser número negativo.

Estou lendo os bytes assim:

java.nio.ByteBuffer.wrap(arrayBytes).getShort();

E pra gerar a variável de 2 bytes estou fazendo assim:

java.nio.ByteBuffer.allocate(2).putShort((short) 64800).array();

Com int funciona perfeitamente.

Como que eu posso fazer isso?
Obrigada

2 Respostas

ViniGodoy

Você terá que promover o dado:

int valor = java.nio.ByteBuffer.wrap(arrayBytes).getShort() & 0xFFFF;

Ou expreme-lo:

java.nio.ByteBuffer.allocate(2).putShort((short) (64800 & 0xFFFF)).array();

Como você está lidando com ByteBuffers, já fiz uma classe que faz esse tipo de operação:

eliangela

Olá, Viny!
Funcionou aqui.
Muito obrigada!

Criado 28 de abril de 2012
Ultima resposta 30 de abr. de 2012
Respostas 2
Participantes 2