Concatenando 2 numeros de 8 bits para 1 numero de 16 bits

2 respostas
C

Boa Tarde pessoal,
Como a serial trabalha apenas com 8 bits
Quando eu preciso receber um número de 16 bits eu os separo em MSB (byte mais significativo) e LSB(byte menos significativo).

Por exemplo.
Recebo um pacote da serial (em hexa)
01 50 00 FF

01 - Inicio do cabeçalho

50 00 - dados que eu preciso ler

FF - Final do pacote

pois bem a primeira ideia que eu tive foi criar um array que recebesse todos os bytes

no caso

int[] buffer = new int[4];
e o resultado ficaria (em hexa)
buffer[0] = 0x01;
buffer[1] = 0x50;
buffer[2]= 0x00;
buffer[3] = FF;

mas o valor que eu preciso ler é 0x500 (0x500 em decimal 1280)
e mesmo concatenando em uma string eu nao consegui (devido aos valores hexadecimal )

alguem tem alguma sugestao?

[]s

2 Respostas

T
byte b1 = (byte) 0xCA;
byte b2 = (byte) 0xFE;
int b1b2 = ((b1 &lt&lt 8) & 0xFF00) | (b2 & 0xFF);
// deve dar 0xCAFE
T

Bom dia,

Funcionou legal a concatenação com 2 Bytes desse jeito, porem preciso concatenar mais de dois bytes (ex: 0x22015000FF) para exibir o valor, como posso fazer?

Criado 13 de setembro de 2007
Ultima resposta 29 de set. de 2014
Respostas 2
Participantes 3