Olá pessoal…
Estou trabalhando com uma API de simulação de agentes autônomos. Esses agentes trocam mensagens entre si. Cada mensagem pode carregar apenas 256 bytes de informação. Eu posso formatar essa mensagem da forma que eu quiser. Ou seja, posso colocar qualquer coisa ali, desde que eu codifique e decodifique em bytes.
Encontrei este método:
public static void encodeInt(int value, byte[] buf, int bufPos) {
buf[bufPos] = (byte)(value >> 24 & 0xFF);
buf[bufPos+1] = (byte)(value >> 16 & 0xFF);
buf[bufPos+2] = (byte)(value >> 8 & 0xFF);
buf[bufPos+3] = (byte)(value & 0xFF);
}
Ele codifica um inteiro em 4 posições do array de bytes, porque sabemos que um inteiro em Java é representado com 4 bytes de informação. Só não entendi exatamente essas operações de deslocamento e AND lógico. E nem porque elas são realizadas. E não faço idéia do que seja " 0xFF", por exemplo…
Alguém poderia dar uma luz neste sentido?