Converter um array de byte em int ou short

8 respostas
A

Tenho um array de byte e gostaria de transforma-lo em int ou short. Alguem sabe como faço isso?

Ex. Na posição 0 do array tenho o valor 3 e na posição 1 o valor -23.

Em Binário
3 = 0000 0011
-23 = 1110 1000

Gostaria de soma-los
0000 0011 1110 1000 = 1000.

Aguardo ajudas.

8 Respostas

sergiotaborda

agcn84:
Tenho um array de byte e gostaria de transforma-lo em int ou short. Alguem sabe como faço isso?

Ex. Na posição 0 do array tenho o valor 3 e na posição 1 o valor -23.

Em Binário
3 = 0000 0011
-23 = 1110 1000

Gostaria de soma-los
0000 0011 1110 1000 = 1000.

Somá-los ? Não seria concatená-los. Essa ultia unstrução ai não explica o que vc quer. Vc quer concatená-los e depois pegar o menor byte ? ( se for isso basta pegr o menor byte de -23)

paulo.ubuntu

Dá uma olhada em Boxing e UnBoxing…provavelmente te servirá nessa duvida

tem um tutorial aqui no GUj sobre isso

http://www.guj.com.br/java.tutorial.artigo.146.1.guj

Abraços

A

Isso gostaria de concatená-lo, mas como binários, como eu faço isso?

Pois se eu transforma-los em int o -23 é transformado em

-23 = 1111 1111 1110 1000

A

paulo.ubuntu:
Dá uma olhada em Boxing e UnBoxing…provavelmente te servirá nessa duvida

tem um tutorial aqui no GUj sobre isso

http://www.guj.com.br/java.tutorial.artigo.146.1.guj

Abraços

Amigo,

Li o tutorial mas não sei como ele pode me ajudar. Acho qeu sou burrão mesmo

B

Bem, um byte tem 8 bits, um int em Java tem 32 bits.

Portanto você precisa pelo menos de um array com 4 bytes para transformar p/ int, ou quando tiver menos que isso, definir que valor os bits de alta ordem assumirão.

Quanto à transformação para int:
byte[] entrada = new byte[4];
// preencha a entrada

// Aplicando o padding, assumindo os primeiros bytes como os de
// alta ordem.
int a1 = (int) entrada[3];
int a2 = ((int) entrada[2]) << 4;
int a3 = ((int) entrada[1]) << 8;
int a4 = ((int) entrada[0]) << 12;

int a = a1 + a2 + a4 + a4;
Alkamavo

esta parte do int em java ter 32 bits é ja me tinha eskecido…ja tinha andado em conversoes malukas… :twisted: :twisted: :twisted:

Este tutorial n tem nada a ver!!!

paulo.ubuntu

a proposta a principio não era converter array de byte pra int

então SIM, te a ver…

sergiotaborda

agcn84:
Isso gostaria de concatená-lo, mas como binários, como eu faço isso?

Pois se eu transforma-los em int o -23 é transformado em

-23 = 1111 1111 1110 1000

Esse é o numero -23 em int

0000 0011 1110 1000 pode ser escrito como

A = 0000 0011
B = 1110 1000

o inteiro que resulta dai pode ser escrito como

short res = (A <;< 8) & B

mas não sei o que vc espera obter com isso

Criado 12 de maio de 2008
Ultima resposta 12 de mai. de 2008
Respostas 8
Participantes 5