当使用大整数操作时,Java和Javascript会产生不同的结果。JavaScript中的Java int操作
例如:getCode(1747,1763,-268087281,348400)
返回1921968083
在Java中,但JavaScript返回2.510115715670451e+22
。
如何在Java中使用Javascript获取结果?
做了一些研究后,问题似乎与有符号/无符号32/64位整数运算有关。我曾尝试将|0
添加到所有操作中,并得到了更接近但不完全相同的1921618368
。
的Java:
public String getCode(int intVal1, int intVal2, int intVal3, int IntA) {
int intVal5 = intVal2^intVal3 ;
intVal5 = intVal5 + (intVal1 | IntA) ;
intVal5 = intVal5 * (intVal1 | intVal3 ) ;
intVal5 = intVal5 * (intVal2^IntA) ;
return String.valueOf(intVal5);
}
的Javascript:
function getCode(intVal1,intVal2,intVal3,IntA) {
var intVal5 = intVal2^intVal3 ;
intVal5 = intVal5 + (intVal1 | IntA) ;
intVal5 = intVal5 * (intVal1 | intVal3 ) ;
intVal5 = intVal5 * (intVal2^IntA) ;
return intVal5;
}
欢迎来到Stack Overflow!要求人们发现代码中的错误并不是特别有效。您应该使用调试器(或者添加打印语句)来分析问题,追踪程序的进度,并将其与预期发生的情况进行比较。只要两者发生分歧,那么你就发现了你的问题。 (然后如果有必要,你应该构造一个[最小测试用例](http://sscce.org)。) –
为什么使用php?请检查您的标签 –
JavaScript中没有ints。解释算法而不是仅仅向我们倾倒代码可能是有用的。 –