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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...