日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android checksum校验

發布時間:2024/3/24 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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校验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。