android checksum校验
生活随笔
收集整理的這篇文章主要介紹了
android checksum校验
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
checksum就是校驗碼,和md5的概念可以說是一樣的,只是算法不一樣.
checksum的算法也都不一樣,看定的協議是怎么樣的
我這邊的業務場景是需要android端給打印機發送一個升級指令,兩個是由藍牙通訊的,打印機就需要校驗下升級文件
我們定的checksum協議:將實際文件按無符號字節類型累加,保留低4字節
注:因為java里面默認的類型都是有符號類型的,所以需要先把文件的字節轉成無符號類型的累加 就OK了. 直接上代碼,注釋都很清楚
byte[] write =new byte[(int)upgradeFile.length()]; //升級文件先寫到字節數組中 FileInputStream inputStream= null; try {inputStream = new FileInputStream(upgradeFile); inputStream.read(write); inputStream.close(); } catch (FileNotFoundException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); } int fileByte=0; //做累加 for (byte b:write) { fileByte+=b&0xff; //b&0xff 就是將字節轉為無符號類型的 }byte[] loB4=intToBytes(fileByte); //checksum 取低四字節
/** * 將int數值轉換為占四個字節的byte數組 * @param value * 要轉換的int值 * @return byte數組 */ public static byte[] intToBytes( int value ) {byte[] src = new byte[4]; src[3] = (byte) ((value>>24) & 0xFF); src[2] = (byte) ((value>>16) & 0xFF); src[1] = (byte) ((value>>8) & 0xFF); src[0] = (byte) (value & 0xFF); return src; }
?代碼很簡單這樣子checksum就算完了
剛開始做的時候浪費了一點時間 就是因為不知道java默認都是有符號類型的, 累加完了才轉為無符號類型.
總結
以上是生活随笔為你收集整理的android checksum校验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小马哥---高仿苹果6s 主板H339
- 下一篇: 第九届蓝桥杯——星期一