在Javascript中显示整数

在Javascript中显示整数,javascript,node.js,Javascript,Node.js,我有一个将IPv6地址转换为十进制值的方法 目前我的结果是: 4.254076641128259e+37 但我需要这个: 42540766411282592857539836924043198464 我的代码: var ip = '2001:0db8:0:0:8d3:0:0:0'; var address = new v6.Address(ip); var bin = address.binaryZeroPad(); var dec = 0; for (var i = 0; i < b

我有一个将IPv6地址转换为十进制值的方法

目前我的结果是:

4.254076641128259e+37
但我需要这个:

42540766411282592857539836924043198464
我的代码:

var ip = '2001:0db8:0:0:8d3:0:0:0';
var address = new v6.Address(ip);
var bin = address.binaryZeroPad();
var dec = 0;
for (var i = 0; i < bin.length; i++) {
    dec = dec + parseInt(bin[i]) * Math.pow(2, bin.length - 1 - i);
}
console.log(dec);
var ip='2001:0db8:0:0:8d3:0:0:0';
var地址=新的v6.地址(ip);
var bin=address.binaryZeroPad();
var-dec=0;
对于(变量i=0;i

我使用ip地址库将IPv6首先转换为二进制。

如果不降低精度,则无法将未签名的128位数字表示为JavaScript数字。JavaScript数字只允许存储最多2^53的整数。看

看,08d3组已丢失

var dec = 42540766411282592857539836924043198464;
console.log(dec.toString(16))
// ==> 20010db8000000000000000000000000
另一种方法是使用另一个库来模拟任意大整数,如(许可证)

示例与相应的


可能的重复项不能将未签名的128位数字表示为JavaScript数字。JavaScript数字只允许存储最多2^53的整数。看看这个答案。我只是在研究另一种解决方案……还要注意,这不是重复的,链接的答案不处理大的数字。是否可以将每个部分添加到字符串中?当我尝试转换时,您可以使用我得到的错误值:2a01:0ad0:0022::0My IP6转换不处理::符号。我之所以包括它,是因为我无法访问任何提供新v6.Address(ip)的代码。。。。出于兴趣那是什么图书馆?我在谷歌上找不到。。。。
var ip = '2001:0db8:0:0:8d3:0:0:0';

// simulate your address.binaryZeroPad(); method
var parts = [];
ip.split(":").forEach(function(it) {
    var bin = parseInt(it, 16).toString(2);
    while (bin.length < 16) {
        bin = "0" + bin;
    }
    parts.push(bin);
})
var bin = parts.join("");

// Use BigInteger library
var dec = bigInt(bin, 2).toString();
console.log(dec);
42540766411282592857539836924043198464