16進制數據相加,計算校驗和

取得是低位校驗和
public String makeChecksum(String data)
    {
        if (StringUtils.isEmpty(data))
        {
            return "";
        }
        
        int iTotal = 0;
        int iLen = data.length();
        int iNum = 0;
        
        while (iNum < iLen)
        {
            String s = data.substring(iNum, iNum + 2);
            System.out.println(s);
            iTotal += Integer.parseInt(s, 16);
            iNum = iNum + 2;
        }
        
        /**
         * 用256求餘最大是255,即16進制的FF
         */
        int iMod = iTotal % 256;
        String sHex = Integer.toHexString(iMod);
        iLen = sHex.length();
        //如果不夠校驗位的長度,補0,這裏用的是兩位校驗
        if (iLen < 2)
        {
            sHex = "0" + sHex;
        }
        return sHex;
    }

發佈了68 篇原創文章 · 獲贊 20 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章