public static String makeChecksum(String num, int count) {
//拆分每个16进制字符串
String[] split = num.trim().split("");
for (int i = split.length - 1; i > -1; i--) {
int size = hexToInteger(split[i]) + count;
int valuen = size % 16;
split[i] = encodeHEx(valuen);
count = size / 16;
}
StringBuilder str = new StringBuilder();
for (int i = 0; i < split.length; i++) {
str.append(split[i]);
}
return str.toString();
}
public static String makeChecksum2(String num, int count) {
//拆分每个16进制字符串
String[] split = num.trim().split("");
int i = split.length - 1;
StringBuilder builder = new StringBuilder();
while(count != 0){
if (i >= 0){
int size = hexToInteger(split[i]) + count;
int valuen = size % 16;
split[i] = encodeHEx(valuen);
count = size / 16;
}else {
int valuen = count % 16;
if (valuen > 0){
builder.append(encodeHEx(valuen));
}
count = count / 16;
}
i--;
}
StringBuilder str = new StringBuilder();
if(builder.length() > 0){
String[] bsplit = builder.toString().split("");
for (int s = bsplit.length - 1; s > -1; s--) {
str.append(bsplit[s]);
}
}
for (int n = 0; n < split.length; n++) {
str.append(split[n]);
}
return str.toString();
}
//10进制转成16进制数
public static String encodeHEx(Integer numb) {
String hex = Integer.toHexString(numb);
return hex;
}
//16进制数转成10进制
public static Integer hexToInteger(String hex) {
Integer num = Integer.parseInt(hex, 16);
return num;
}