private static char[] getChars(int i) {
char buf[] = new char[32];
int q;
for (int j = 31; j >= 0; j--) {
q = (i * 52429) >>> (19);
int r = i - ((q << 3) + (q << 1));
buf[j] = (char) (r + '0');
i = q;
if (i == 0)
break;
}
return buf;
}
上述代碼基於java.lang.Integer.getChars(int)的一部分。開發者是如何拿出這個「神奇」數字52429的。它背後的數學是什麼?在81920作爲輸入後,此功能不起作用。爲什麼這個幻數只適用於一定範圍的輸入?getChar函數如何工作?
此方法屬於哪個類? – Seelenvirtuose
@Seelenvirtuose哎呀,OP更新。它在java.lang.Integer – user282909
我只在'java.lang.Integer'(JDK7和JDK8)中看到一個方法'static void getChars(int i,int index,char [] buf)'。困惑... – Seelenvirtuose