[RESOLVIDO]Checksum - Soma de bytes

Boa tarde a todos, depois de muita pesquisa aqui e na web solicito a ajuda dos colegas.
Estou precisando verificar o Checksum de um frame de comunicação.
Eu recebo a seguinte informação (byte):

(representação em hexa)
“01082D0516562A510CFF494C6A4B42410000000000000FC210304D20001D0C370008060E060500280700001F2500860781002213B404”

Bom a documentação (vaga) do protocolo me diz:

“O checksum compreende a soma em uma variável tipo byte de todos os caracteres desde o caracter posterir ao 01h, até o caracter imediatamente anterior ao checksum.O
checksum é sempre o caracter anterior ao 04h.”
01h = inicio do frame
04h = final do frame
Checksum = B4h

Entao tenho o código:

public class Teste1 {

        public static void main(String[] args) {

		short[] frame = { 0x01, 0x08, 0x2D, 0x05, 0x16, 0x56, 0x2A, 0x51, 0x0C,
				0xFF, 0x49, 0x4C, 0x6A, 0x4B, 0x42, 0x41, 0x00, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x0F, 0xC2, 0x10, 0x30, 0x4D, 0x20, 0x00,
				0x1D, 0x0C, 0x37, 0x00, 0x08, 0x06, 0x0E, 0x06, 0x05, 0x00,
				0x28, 0x07, 0x00, 0x00, 0x1F, 0x25, 0x00, 0x86, 0x07, 0x81,
				0x00, 0x22, 0x13, 0xB4, 0x04 };
               System.out.println(getCheckSum(frame));
        }
        
        public static short getCheckSum(short[] frame_) {

		short retorno = 0;
		boolean inicio = false;
		for (short b : frame_) {

			if (b == 0x01 && !inicio) {
				inicio = true;
				continue;
			}

			if (b == 0x00)
				continue;

			retorno += b;

			if (b == 0x13)
				break;
		}
		return retorno;
	}
}

Bom o checksum deste pacote é o B4h em decimal = 180
Pelo código que fiz o resultado está sendo 1972, em hexa = 7B4
Tinha iniciado as rotinas utilizando byte[], e depois e pesquisar um pouco vi que o byte suporta -127 a 127. Então mudei para short.
Já quebrei a cabeça com isto e tendo em vista a pouca documentação e a falta de suporte do hardware gostaria de uma ajuda dos colegas.

Grato
Júnior

Faça AND com o valor 0xFF.

Exemplo:

short x = 0x7BA;
x = (short) (x & 0xFF);
System.out.printf ("%02X", x); 

Obrigado camarada…resolveu tudo!