You need to enable JavaScript to run this app. 基于IP与CIDR输入生成对应网段全量IP地址列表的实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

基于IP与CIDR输入生成对应网段全量IP地址列表的实现咨询

实现方案与完整代码

核心逻辑说明

你目前已经实现了IP转二进制、提取主机位的能力,接下来只需要补充IP和32位整数的互转逻辑,即可快速生成全量网段IP:

  • 先将输入的IP转为32位整数,清零主机位得到网段起始地址的整数值
  • 总IP数量为 2^(32-CIDR),遍历0到总数量-1的偏移量,依次叠加到起始地址整数上,再转回点分十进制IP即可得到全量IP数组
  • 最终用PowerShell内置的集合比对方法即可快速找出缺失IP

完整可运行代码

# 原有函数:点分十进制IP转32位二进制字符串
function ConvertToBinary{
    param($ipAddress)
    [string]$binaryIP = -join ($ipAddress.Split('.') | ForEach-Object {[System.Convert]::ToString($_,2).PadLeft(8,'0')})
    return $binaryIP
}
# 新增函数:32位二进制字符串转整数
function ConvertToInt{
    param($binaryStr)
    return [System.Convert]::ToUInt32($binaryStr, 2)
}
# 新增函数:整数转回点分十进制IP
function ConvertToIP{
    param($ipInt)
    $bytes = [System.BitConverter]::GetBytes($ipInt)
    [Array]::Reverse($bytes)
    return [System.Net.IPAddress]$bytes | Select-Object -ExpandProperty IPAddressToString
}
# 主函数:根据IP和CIDR生成网段内所有IP数组
function Get-AllIPsInCIDR{
    param(
        [string]$IPAddress,
        [int]$CIDR
    )
    # 校验CIDR范围
    if($CIDR -lt 0 -or $CIDR -gt 32){
        throw "CIDR值必须在0-32之间"
    }
    $binaryIP = ConvertToBinary $IPAddress
    $hostBits = 32 - $CIDR
    # 清零主机位得到网络地址二进制
    $networkBinary = $binaryIP.Substring(0, $CIDR).PadRight(32, '0')
    $networkInt = ConvertToInt $networkBinary
    $totalIPCount = [Math]::Pow(2, $hostBits)
    # 生成所有IP
    $ipList = for($i=0; $i -lt $totalIPCount; $i++){
        ConvertToIP ($networkInt + $i)
    }
    return $ipList
}
# ------------------- 使用示例 -------------------
# 示例1:生成指定CIDR的所有IP
$allIPs = Get-AllIPsInCIDR -IPAddress "192.168.1.0" -CIDR 24
# 输出前10个IP验证
$allIPs | Select-Object -First 10
# 示例2:和已有IP列表对比找缺失
$existingIPs = @("192.168.1.2", "192.168.1.5", "192.168.1.100")
$missingIPs = $allIPs | Where-Object { $_ -notin $existingIPs }
# 输出缺失IP
$missingIPs

注意事项

  • 如果是小于/16的大网段,全量生成IP会占用较多内存,建议直接对比偏移量,不需要先生成全量IP数组
  • 如需过滤网络地址和广播地址,生成数组后直接去掉首尾两个元素即可

内容的提问来源于stack exchange,提问作者chrisbetts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 21:45:04