如何像这样增加IP地址:
0.0.0.0
0.0.0.1
...
0.0.0.255
0.0.1.0
0.0.1.1
...
0.0.255.0
0.1.0.0
0.1.0.1
...
0.1.0.255
0.1.1.0
...
0.1.255.0
0.1.255.1
0.1.255.2
...
0.2.0.0
...
我的尝试使我正确地获得了前两个尾部节点,但除此以外,它还会产生错误的输出。
function increment_ip(input) {
var iparray = input.concat()
var output = []
var i = iparray.length
var inc = false
while (i--) {
var count = iparray[i]
if (count < 255) {
output.unshift(count)
if (!inc) {
iparray[i] = iparray[i] + 1
inc = true
}
} else {
iparray[i] = 0
output.unshift(0)
if (i - 1 > -1) {
iparray[i - 1] = iparray[i - 1] + 1
}
}
}
return output
}
答案 0 :(得分:1)
不是将IP地址建模为数组,而是将其建模为单个数字。
每个八位位组都可以通过掩码和移位来提取。
var ip = (input[0] << 24) | (input[1] << 16) | (input[2] << 8) | (input[3] << 0)
ip++
return [ip & 0xff000000 >> 24, ip & 0x00ff0000 >> 16, ip & 0x0000ff00 >>, ip & 0x000000ff]
答案 1 :(得分:1)
正在运行的 Javascript 函数:
function incrementIP(inputIP) {
let ip = (inputIP[0] << 24) | (inputIP[1] << 16) | (inputIP[2] << 8) | (inputIP[3] << 0);
ip++;
return [ip >> 24 & 0xff, ip >> 16 & 0xff, ip >> 8 & 0xff, ip >> 0 & 0xff];
}
用法:
var myIP = [192, 168, 0, 1];
var myIncrementedIP = incrementIP(myIP);
console.log(myIncrementedIP);