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;
}
16進制數據相加,計算校驗和
取得是低位校驗和
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.