import org.apache.commons.lang.StringUtils;
/**
* 和校验
* Created by Administrator on 2016-11-24.
*/
public class Check {
public static void main(String[] args){
String str = "1230DD4661679020"; //校验码:0F
System.out.println(makeChecksum(str));//返回结果应为:0F
}
/**
* 生成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);
total = total ^ Integer.parseInt(s, 16);
num = num + 2;
}
String hex = Integer.toHexString(total);
System.out.println("ssss ;" + hex);
len = hex.length();
//如果不够校验位的长度,补0,这里用的是两位校验
if (len < 2) {
hex = "0" + hex;
}
return hex;
}
}
/**
* 和校验
* Created by Administrator on 2016-11-24.
*/
public class Check {
public static void main(String[] args){
String str = "1230DD4661679020"; //校验码:0F
System.out.println(makeChecksum(str));//返回结果应为:0F
}
/**
* 生成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);
total = total ^ Integer.parseInt(s, 16);
num = num + 2;
}
String hex = Integer.toHexString(total);
System.out.println("ssss ;" + hex);
len = hex.length();
//如果不够校验位的长度,补0,这里用的是两位校验
if (len < 2) {
hex = "0" + hex;
}
return hex;
}
}
本文介绍了一种用于生成16进制累加和校验码的方法,该方法通过逐个处理输入字符串中的每两个字符并将其转换为16进制数进行异或操作来实现。文章提供了一个具体的Java实现示例。
388

被折叠的 条评论
为什么被折叠?



