Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中将十六进制(缓冲区)转换为IPv6_Javascript_Node.js_Hex_Ip_Ipv6 - Fatal编程技术网

如何在javascript中将十六进制(缓冲区)转换为IPv6

如何在javascript中将十六进制(缓冲区)转换为IPv6,javascript,node.js,hex,ip,ipv6,Javascript,Node.js,Hex,Ip,Ipv6,我有一个包含IPv6地址十六进制表示的缓冲区。 如何将其转换为实际的IPv6表示 // IP_ADDRESS is a buffer that holds the hex value of the IPv6 addr. let IP_ADDRESS_HEX = IP_ADDRESS.toString('hex'); // 01000000000000000000000000000600 实际上,如果一个简单的lib提供了转换功能,我并不介意使用它。我不知道我是否真的回答了你的问题,但要将字

我有一个包含IPv6地址十六进制表示的缓冲区。 如何将其转换为实际的IPv6表示

// IP_ADDRESS is a buffer that holds the hex value of the IPv6 addr.

let IP_ADDRESS_HEX = IP_ADDRESS.toString('hex'); 
// 01000000000000000000000000000600

实际上,如果一个简单的lib提供了转换功能,我并不介意使用它。

我不知道我是否真的回答了你的问题,但要将字符串
IP\u-ADDRESS\u-HEX
转换为IPv6地址表示,我会使用string.slice()将
IP\u-ADDRESS\u-HEX
分成8组,并使用string.join()添加“:”在这些群体之间

var IP_ADDRESS_HEX = "01000000000000000000000000000600";
var i = 0;
var a = [];
while (i != 8) {
    a[i] = IP_ADDRESS_HEX.slice(i * 4, (i * 4) + 4);
    i++;
}
result = a.join(":");

当然,它只在
IP\u ADDRESS\u HEX
正好有32个字符时才起作用。

我不知道我是否真的回答了你的问题,但要将字符串
IP\u ADDRESS\u HEX
转换为IPv6地址表示形式,我会使用string.slice()将
IP\u ADDRESS\u HEX
分成8组,并使用string.join()添加“:”在这些群体之间

var IP_ADDRESS_HEX = "01000000000000000000000000000600";
var i = 0;
var a = [];
while (i != 8) {
    a[i] = IP_ADDRESS_HEX.slice(i * 4, (i * 4) + 4);
    i++;
}
result = a.join(":");

当然,它只在IP地址十六进制正好有32个字符时才起作用。

如果您的IP地址十六进制始终具有相同的大小,您可以执行以下操作。如果没有,你也需要填充字符串

'01000000000000000000000600'
.match(/.{1,4}/g)
.join(“:”)
// "0100:0000:0000:0000:0000:0000:0000:0600"
您也可以缩短某些块,但这不是必须的,例如
ffff:0000:0000:0000:0000:0000
将变为
ffff::
,但两者都有效

如果你还想要完整的规格,你可以这样做

'01000000000000000000000600'
.match(/.{1,4}/g)
.map((val)=>val.replace(/^0+/,“”))
.join(“:”)
.替换(/0000\:/g,,:'))
.replace(/:{2,}/g,,::'))
// "100::600"

如果您的IP地址始终具有相同的大小,您可以执行以下操作。如果没有,你也需要填充字符串

'01000000000000000000000600'
.match(/.{1,4}/g)
.join(“:”)
// "0100:0000:0000:0000:0000:0000:0000:0600"
您也可以缩短某些块,但这不是必须的,例如
ffff:0000:0000:0000:0000:0000
将变为
ffff::
,但两者都有效

如果你还想要完整的规格,你可以这样做

'01000000000000000000000600'
.match(/.{1,4}/g)
.map((val)=>val.replace(/^0+/,“”))
.join(“:”)
.替换(/0000\:/g,,:'))
.replace(/:{2,}/g,,::'))
// "100::600"

啊,谢谢!看来我对我的问题理解错了。我的十六进制已经在IPv6中。我只需要用特定的格式来表示它。啊,谢谢!看来我对我的问题理解错了。我的十六进制已经在IPv6中。我只需要用特定的格式来表示它。