【发布时间】:2016-07-04 15:12:06
【问题描述】:
我一直致力于将大型 javascript 程序转换为 java。但是我不确定这几行中发生了什么以及如何将其转换为 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;
}
它是一个可分割的函数。 hash 是一个字符串(特别是 sha256 字符串散列)。谁能帮我弄清楚这个奇怪的forloop?谢谢。
我知道 parseInt 正在将其转换为基数 16,因为我已在代码中的其他位置翻译了该部分。
【问题讨论】:
-
for 子句只是一个三元运算符,用于将 i 设置为 o - 4 或 0。
<<部分是按位运算符,但我不能 100% 确定结果是什么该计算是。 -
Bitwise and Bit Shift Operators、Java Conditional Operator、Integer.parseInt。除了 parseInt 用法之外,唯一的非 Java 语法是
var i,它将变为int i。当然hash.length变成hash.length()。 -
我之前从未见过按位和移位运算符,我缺乏理解,感谢您清除此问题@n*s
标签: javascript java