下面是两段简单的java程序:
/**
* 计算16进制字符串的整数和
* @param hexString 16进制字符串 每两位是一个字节
* @return 整数和
*/
public int cal(String hexString) {
int sum = 0;
if ((hexString.length() % 2) == 0) {
for (int i = 0; i < hexString.length(); i += 2) {
sum += Integer.parseInt(hexString.substring(i, i + 2), 16);
}
}
return sum;
}
给一个任意长度的16进制字符串,可以求其和,当然为了表示更大的数,可以返回long,代替int。
/**
* 把一个整数转为4个16进制字符表示 并调整位置
* @param sum 要表示的整数和
* @return 4个16进制数其和为一个整数和
*/
public String sumHex(int sum) {
String result = "";
char[] availchars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
int i, j, k, l;
outerloop:
for (i = 0; i < 16; i++) {
for (j = 0; j < 16; j++) {
for (k = 0; k < 16; k++) {
for (l = 0; l < 16; l++) {
int a1 = i * 4096;
int a2 = j * 256;
int a3 = k * 16;
int a4 = l * 1;
if ((a1 + a2 + a3 + a4) == sum) {
result = String.valueOf(availchars[i]) + availchars[j] + availchars[l] + availchars[l];
break outerloop;
}
}
}
}
}
return result;
}
返回的4个16进制字符串,每位相加正好是sum。