android / java中的校验和计算

前端之家收集整理的这篇文章主要介绍了android / java中的校验和计算前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 android / java中写了一个校验和计算函数.功能如下
void CalculateCheckSum( byte[] bytes ){
     short CheckSum = 0,i = 0;
     for( i = 0; i < bytes.length; i++ ){
        CheckSum = (short) ((short)CheckSum + (short)bytes[i]);
     }

     Log.i("Checksum",Integer.toHexString(CheckSum));
}

计算校验和的输入值为0xEF,0x01,0xEF,0x33,0x0C,0xB8,0xE5,0xFC,0x34,0xFF,0xFF.我手动计算校验和值,结果为0xCE4.当使用上面的函数时,我的答案为0xFFFFFFE4.在我的计算中是否有任何错误,如果是,那么请纠正我.

谢谢

解决方法

字节根据 Java Docs

The value of a byte is ranged between 2^(-7) and (2^7)-1 (-128 to 127).

但是你的值0xEF(十进制239)已经达到了一个字节的极限.这就是导致总和给出错误数字的原因.

猜你在找的Android相关文章