将带有 long 变量的 java 函数转换为 NodeJS

Convert java function with long variable to NodeJS

在 Java 函数中有“long”变量。

public class LongToIntExample1{  
    public static void main(String args[]){  
        long l=2672558412L;  
        int i=(int)l;  
        System.out.println(i);  
    }
}

=> Output: -1622408884

我尝试使用 NodeJS 函数如下,但输出错误:

module.exports.LongToIntExample1 = () => {
    var l = 2672558412n;
    var i = parseInt(l);
    console.log(i);
}

=> Output: 2672558412

如何将 NodeJS 函数编写为具有相同输出的 Java 函数?

如果您阅读此答案: Java 将包裹 long 超过 Integer.MAX_VALUE 的部分,并且该值将变为负值。

显然在 NodeJS 中情况并非如此

由于 long 大于 int,您尝试重现的行为实际上是 Java 实现不安全的副产品,即不检查 long 值是否小于 Integer.MAX_VALUE

就我个人而言,我不会在我的程序中依赖这样的机制

我们可以使用 built-in Int32Array 将数字转换为 32 位有符号整数,如下所示:

function LongToIntExample1(num) {
     return (new Int32Array([num]))[0];
}
 
console.log(LongToIntExample1(2672558412))
console.log(LongToIntExample1(2147483647))