以下算法將十六進制轉換爲十進制,但我很困惑,該解決方案的工作原理是什麼?需要一些關於十六進制到十進制算法的工作原理
public static int hex2decimal(String s) {
String digits = "ABCDEF";
s = s.toUpperCase();
int val = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
return val;
}
我知道只有一個辦法做到這一點之前,我發現了這一個。 我的意思是,每個人都知道: X*16^Y
其中X
是要轉換的數量和Y
是數(從結束到開始乞討)的位置。
所以,如果你想轉換DA145
爲十進制會...
*(5 * 16^0) + (4 * 16^1) + (1 * 16^2) + (10 * 16^3) + (13 * 16^4)*
因爲你基本上只是編輯半字節,所以它實際上更快(通常忽略不計,除非你重複運行這個代碼)使用'|'和'<< 4'而不是'+'和'* 16'。另外,我認爲在'java.lang.Integer'類中存在一個方法來做到這一點? – SOFe
@Pemap modder謝謝,我相信它存在 – isxaker