如何增加IP地址

如何增加IP地址,ip,counter,increment,Ip,Counter,Increment,如何像这样增加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

如何像这样增加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
}
功能增量(输入){
var iparray=input.concat()
变量输出=[]
变量i=iparray.length
var inc=错误
而(我--){
变量计数=iparray[i]
如果(计数<255){
输出。取消移位(计数)
如果(!inc){
iparray[i]=iparray[i]+1
inc=真
}
}否则{
i阵列[i]=0
输出。取消移位(0)
如果(i-1>-1){
iparray[i-1]=iparray[i-1]+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]
var ip=(输入[0]16,ip&0x0000ff00>>,ip&0x000000ff]

如果您有4个以上的数字,例如类似于IP结构但有100个数字,
1.2.3.4.5.6.7.8…..100
,或者想知道此掩码/移位模式最多可以处理多少个数字。