我一直致力於將一個大型javascript程序轉換爲java。但是我不確定在這幾行中發生了什麼,以及如何將它變成java。將javascript轉換爲java
int val = 0; //already turned to java
int o = hash.length() % 4; //already turned to java
for (var i = o > 0 ? o - 4 : 0; i < hash.length; i += 4) {
val = ((val << 16) + parseInt(hash.substring(i, i+4), 16)) % mod;
}
它是一個可分的功能。散列是一個字符串(特別是一個sha256字符串散列)。任何人都可以幫我弄清楚這個奇怪的forloop?謝謝。
我知道parseInt將它變成了基數16,因爲我已經在代碼中翻譯了該部分的其他地方。
for-clause只是一個三元運算符,用於將i設置爲o-4或0。<< <<'部分是一個按位運算符,但我不能100%確定該計算的結果是什麼。 – Shilly
[位移和位移運算符](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html),[Java Conditional Operator](https://docs.oracle.com/javase/) tutorial/java/nutsandbolts/op2.html),[Integer。parseInt函數(https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String中,%20int))。除了parseInt的用法外,唯一的非Java語法是'var i',它會變成'int i'。當然,'hash.length'變成'hash.length()'。 – nbrooks
我的理解力不夠,以前從來沒有見過位運算符和位移運算符,謝謝你清理這個@nbrooks – Lain