67,513
社区成员
发帖
与我相关
我的任务
分享
int[] hex2Int(String src, int dig) {
byte[] b = src.getBytes();
int len = (b.length%dig == 0) ? b.length/dig : b.length/dig+1;
int[] result = new int[len];
int[] tmp = new int[dig];
Arrays.fill(tmp, 0);
int remain = 0;
for (int i=0, j=0, k=0; i<b.length; i++) {
if (b[i]>=(byte)'0' && b[i]<=(byte)'9') {
tmp[j++] = (int)(b[i]-(byte)'0');
} else if (b[i]>=(byte)'a' && b[i]<=(byte)'f') {
tmp[j++] = 10 + (int)(b[i]-(byte)'a');
} else if (b[i]>=(byte)'A' && b[i]<=(byte)'F') {
tmp[j++] = 10 + (int)(b[i]-(byte)'A');
} else {tmp[j++] = 0;}
if (j==dig) {
int base = 1;
for (int m=j-1; m>=0; m--) {
result[k] += tmp[m]*base;
base *= 16;
}
Arrays.fill(tmp, 0);
j = 0;
k++;
}
remain = j;
}
if (remain > 0) { //上面的,这里漏了判断有没有剩余了
int base = 1;
for (int m=remain-1; m>=0; m--) {
result[result.length-1] += tmp[m]*base;
base *= 16;
}
}
return result;
}
int[] hex2Int(String src, int dig) {
byte[] b = src.getBytes();
int len = (b.length%dig == 0) ? b.length/dig : b.length/dig+1;
int[] result = new int[len];
int[] tmp = new int[dig];
Arrays.fill(tmp, 0);
int remain = 0;
for (int i=0, j=0, k=0; i<b.length; i++) {
if (b[i]>=(byte)'0' && b[i]<=(byte)'9') {
tmp[j++] = (int)(b[i]-(byte)'0');
} else if (b[i]>=(byte)'a' && b[i]<=(byte)'f') {
tmp[j++] = 10 + (int)(b[i]-(byte)'a');
} else if (b[i]>=(byte)'A' && b[i]<=(byte)'F') {
tmp[j++] = 10 + (int)(b[i]-(byte)'A');
} else {tmp[j++] = 0;}
if (j==dig) {
int base = 1;
for (int m=j-1; m>=0; m--) {
result[k] += tmp[m]*base;
base *= 16;
}
Arrays.fill(tmp, 0);
j = 0;
k++;
}
remain = j;
}
int base = 1; //剩余的字符串
for (int m=remain-1; m>=0; m--) {
result[result.length-1] += tmp[m]*base;
base *= 16;
}
return result;
}
int[] hex2Int(String src) {
byte[] b = src.getBytes();
int[] result = new int[b.length/2];
for (int i=0, j=0; i<b.length; i+=2) {
if (b[i]>=(byte)'0' && b[i]<=(byte)'9') {
result[j] = (int)(b[i]-(byte)'0');
} else if (b[i]>=(byte)'a' && b[i]<=(byte)'f') {
result[j] = 10 + (int)(b[i]-(byte)'a');
} else if (b[i]>=(byte)'A' && b[i]<=(byte)'F') {
result[j] = 10 + (int)(b[i]-(byte)'A');
} else {result [j] = 0;}
result[j] *= 16;
if (b[i+1]>=(byte)'0' && b[i+1]<=(byte)'9') {
result[j] += (int)(b[i+1]-(byte)'0');
} else if (b[i+1]>=(byte)'a' && b[i+1]<=(byte)'f') {
result[j] += (10 + (int)(b[i+1]-(byte)'a'));
} else if (b[i+1]>=(byte)'A' && b[i+1]<=(byte)'F') {
result[j] += (10 + (int)(b[i+1]-(byte)'A'));
} else {result[j] += 0;}
j++;
if (j==result.length) break;
}
}
Integer.valueOf(“3e5fa8”,16)