我在
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)已经达到了一个字节的极限.这就是导致总和给出错误数字的原因.