如何在javascript中将十六进制(缓冲区)转换为IPv6
我有一个包含IPv6地址十六进制表示的缓冲区。 如何将其转换为实际的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提供了转换功能,我并不介意使用它。我不知道我是否真的回答了你的问题,但要将字
// 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中。我只需要用特定的格式来表示它。