java累加和校验实现方式16进制

已有 18083人阅读此文 - - JAVA

    已知一个字符串,求该字符串的16进制累加和,已知一段字符串和校验码,校验和累加是否合法,话不多说了直接上代码。


         已知一个字符串,求该字符串的16进制累加和,已知一段字符串和校验码,校验和累加是否合法,话不多说了直接上代码。

 

/**
 *
生成16进制累加和校验码
 *
 * @param
data 除去校验位的数据
 * @return
 */
public static String makeChecksum(String data) {
   
if (StringUtils.isEmpty(data)) {
       
return "";
   
}
   
int total = 0;
    int
len = data.length();
    int
num = 0;
    while
(num < len) {
        String s = data.substring(num
, num + 2);
       
System.out.println(s);
       
total += Integer.parseInt(s, 16);
       
num = num + 2;
   
}
   
/**
     *
用256求余最大是255,即16进制的FF
     */
   
int mod = total % 256;
   
String hex = Integer.toHexString(mod);
   
len = hex.length();
   
//如果不够校验位的长度,补0,这里用的是两位校验
   
if (len < 2) {
        hex =
"0" + hex;
   
}
   
return hex;
}

 

 

/**
 * 16
进制累加和校验
 *
 * @param
data 除去校验位的数据
 * @param
sign 校验位的数据
 * @return
 */
public static boolean checkChecksum(String data, String sign) {
   
// String sourceData="0100150aa303b101b201b301b404b504b601b904ba03be0140";
    //data="0100150aa303b101b201b301b404b504b601b904ba03be01";
    //sign="40";
   
if (StringUtils.isEmpty(data) || StringUtils.isEmpty(sign)) {
       
return false;
   
}
    String checksum = makeChecksum(data)
;
   
System.out.println("=============" + checksum);
    if
(checksum.equals(sign)) {
       
return true;
   
} else {
       
return false;
   
}
}


 


来源:自成e家 出处:java累加和校验实现方式16进制
本文由 自成e家 原创 ,转载请注明出处,你的支持是我继续写作、分享的最大动力!