python实现自动划分子网Alpha版(原创)

JLU吉林大学软件学院《计算机网络》核心考点与真题实战解析(2020级适用) 本文详细解析了JLU吉林大学软件学院《计算机网络》课程的核心考点与2020级真题实战技巧。内容涵盖路由算法、TCP可靠传输、子网划分等高频考点,并提供备考策略与计算题专项训练,帮助学生高效复习。特别针对软件学院学生,整合真题解析与应试技巧,助力考试冲刺。 阅读详情

此脚本可以根据输入的主机数量 规划子网段的划分,适用于交流学习。
示例:
在这里插入图片描述
python版本建议3.8及以上。
如果需求是给定子网数量,均匀划分子网的话,主页有beta版本,欢迎查看!

import heapq

class Node:
    def __init__(self, key=None, freq=0):
        self.key = key
        self.freq = freq
        self.left = None
        self.right = None

    # 优先队列(堆)需要支持小于操作
    def __lt__(self, other):
        return self.freq < other.freq

def build_huffman_tree(frequency):
    heap = []
    for key, freq in frequency.items():
        heapq.heappush(heap, Node(key, freq))
    
    while len(heap) > 1:
        node1 = heapq.heappop(heap)
        node2 = heapq.heappop(heap)
        merged = Node(freq=node1.freq + node2.freq)
        merged.left = node1
        merged.right = node2
        heapq.heappush(heap, merged)
    
    return heap[0] if heap else None

def generate_codes(root, current_code='', codes={}):
    if root is None:
        return

    if root.key is not None:
        codes[root.key] = current_code
        return

    generate_codes(root.left, current_code + '0', codes)
    generate_codes(root.right, current_code + '1', codes)

def huffman_encoding(frequency):
    root = build_huffman_tree(frequency)
    codes = {}
    generate_codes(root, '', codes)
    return codes

# 将十进制IP转化为二进制
def get_BinaryIP(IP):
    tmp = IP.split('.')
    Blist = []
    Blist.append("{:08b}".format(int(tmp[0])))
    Blist.append("{:08b}".format(int(tmp[1])))
    Blist.append("{:08b}".format(int(tmp[2])))
    Blist.append("{:08b}".format(int(tmp[3].split('/')[0])))
    Blist.append(int(tmp[3].split('/')[1]))
    BIPtmp = ''
    for i in Blist:
        BIPtmp += str(i)
    BIP = BIPtmp[:32:] + '/' + BIPtmp[32::]
    return BIP

# 将二进制IP转化为十进制
def get_DecimalIP(IP):
    tmp = IP.split('/')
    Dlist = []
    Dlist.append(int(tmp[0][:8:], 2))
    Dlist.append(int(tmp[0][8:16:], 2))
    Dlist.append(int(tmp[0][16:24:], 2))
    Dlist.append(int(tmp[0][24:32:], 2))
    DIPtmp = ''
    for i in Dlist:
        DIPtmp += str(i)
        DIPtmp += '.'
    DIP = DIPtmp[:-1:] + '/' + str(tmp[1])
    return DIP

# 输出大于num的 2的n次方序列 的最小项
def limit_2_index(num):
    for i in range(0, 32):
        if num < 2**i - 2:  # 减2是因为要考虑网络号(全0)和广播号(全1)
            return 2**i

def main():
    # 输入可分配网段
    ANS = '192.168.36.0/24'
    inputANS = input("输入待分配网段(默认 192.168.10.0/24):")
    if inputANS:
        ANS = inputANS
    
    tail = int(ANS.split('/')[1])  # 网络号位数
    capacity = 2**(32 - tail)  # 计算 提供的网段 所能容纳的 主机数量
    dic0, dic = {}, {}  # dic0存放原始输入信息,dic存放经过limit_2_index函数处理过的输入信息
    
    # 输入子网段主机数列表
    int_input = [10,20,30,40]
    print("请输入各网段的主机数,每个网段以空格间隔")
    inputSubnet = input("(默认 10 20 30 40 ): ")
    if inputSubnet:
        int_input = list(map(int,inputSubnet.split(' ')))
    
    for i in range(len(int_input)):
        dic0[i] = int_input[i]
        dic[i] = limit_2_index(int_input[i])

    if sum(dic.values()) > capacity:
        print("主机数量太多了!")
        exit()

    sorted_huffman_codes = sorted(huffman_encoding(dic).items(), key=lambda x: x[0])
    for key, value in sorted_huffman_codes:
        btail = tail + len(value)  # 子网的网络号位数
        for i in range(32 - btail):  # 将子网的非网络位补齐
            get_BinaryIP(ANS)
            value += '0'
        BIP = get_BinaryIP(ANS)[:tail] + str(value) + '/' + str(btail)
        print(dic0[key], ':', get_DecimalIP(BIP))
        # print(BIP)

if __name__ == "__main__":
    main()

如有问题欢迎私信。
转载请标明原出处,谢谢!

Python NetworkX实战:从足球数据到战术网络分析全流程 图论与网络分析是数据科学中用于研究复杂关系系统的核心方法,其通过节点和边对实体及其交互进行建模。其基本原理是将现实世界的关系抽象为图结构,并利用中心性、聚类系数等指标量化节点的重要性与群体特征。这一技术对于揭示隐藏模式、识别关键枢纽具有重要价值,广泛应用于社交网络、交通规划、生物信息学等领域。在体育数据分析场景中,网络分析能有效量化球队的战术结构与球员角色。本文以足球传球网络为例,结合**networkx**库与**中心性分析**,详细展示了如何从原始事件数据构建有向加权图,并通过计算介数中心性、接近中心性 阅读详情

相关推荐

Qwen3.6-Plus深度解析:编程模型如何实现工程思维建模与智能体协同

编程模型正从代码补全工具演进为具备工程思维的开发协作者。其核心原理在于将软件开发过程建模为领域语义解析、工程约束推理与演化路径规划的三层认知体系,并通过角色化智能体(如Code Architect、Security Auditor)实现跨职能协同决策。这种技术范式突破了传统大模型的文本生成局限,显著提升需求理解准确率、代码可运行率及多跳工具调用成功率,已在工业级SaaS平台、遗留系统迁移、IoT协议集成等真实场景中验证实效。尤其在中文技术语境下,它深度融合信创适配、本土协作工具链与工程规范内嵌能力,使‘国产

weixin_30437847的博客 553

c语言简单实现子网划分

程序老师让我们自己思考如何c语言实现子网划分,我也是想了半个月终于是写出来了。

xy_0856的博客 464

从算法原理到代码实战:一文搞懂PCL/Open3D/Matlab中的Delaunay三角剖分

本文深入解析Delaunay三角剖分算法原理,对比PCL、Open3D和Matlab三大工具库的实现差异,提供从算法理论到代码实战的全面指南。涵盖分而治之、三角网生长和逐点插入等经典算法,以及地形建模等实战案例,帮助开发者掌握三维数据处理核心技术。

weixin_30326741的博客 427

子网划分(python程序)

已知网络地址和子网掩码。

lzj952809310的博客 918

YOLOv11【第六章:模型压缩与极致优化篇·第18节】NAS(神经架构搜索):自动化搜索最适合端侧的 YOLOv11 结构!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1717

YOLOv11【第六章:模型压缩与极致优化篇·第4节】Lamp 剪枝算法:无需超参的自动化剪枝策略!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1209

python来求划分网段子网掩码

py求子网掩码

暖风吹起云之博客 1792

【信息科学与工程学】计算机科学与自动化—第十五篇 云计算 11 算法篇01

编号类型领域问题问题的数学分析(含几何学/拓扑学/代数学/数论/集合论/离散数学/概率论/统计学/其他)及数值分析及算法分析及参数列表及参数数值设计C/C++/rust/python代码软件(含编译器)及硬件资源需求(CPU/GPU/内存【NAND/DRAM/HBM/其他】/HBM、HDD、SSD、RAID卡、其他)关联知识1工作负载调度数据中心最小化总完成时间/成本。

weixin_49199313的博客 214

ArcGIS Runtime SDK for .NET开发实例教程 之 二维WebTiledLayer类型图层加载

ArcGIS Runtime SDK for .NET二维地图控件加载非ArcGIS平台发布的地图服务,支持的方式为通过WebTiledLayer加载的数据类型为标准的OGC标准的切片地图服务,接口说明如下: 加载的代码段如下(以天地图为例,国家天地图已经改变了加载的方式,需要输入秘钥才可以进行访问,具体申请秘钥的方式,请自行百度): 代码运行结果如下 ...

jixg1800的专栏 1235

【信息科学与工程学】计算机科学与自动化——第一百五十五篇 缓存系统设计01 基础知识

CPU:拥有 L1/L2/L3 多级缓存,用于暂存即将执行的指令和频繁访问的数据。GPU:包含显存、纹理缓存、常量缓存、指令缓存等,加速图形渲染和通用计算。RAID 卡 / 存储控制器:自带缓存(通常带电池保护),用于合并写操作、加速读写。打印机:内置内存缓存,用于暂存待打印的页面数据,避免反复从电脑传输。光驱 / 蓝光播放器:内部缓存用于平滑读取光盘数据,防止因寻道延迟导致卡顿。操作系统:页缓存(Page Cache):缓存文件系统数据,减少磁盘 I/O。目录缓存(dentry cache):加速路径查找

weixin_49199313的博客 289

子网划分实验

计算机网络中子网的划分的一个实例 这是一个简单的例子 包含了 基础的代码 使用packet tracer 软件

硬件自动化测试入门:从SCPI指令到Python框架的实战指南

在硬件开发与测试领域,自动化测试是提升效率、保证一致性的关键技术。其核心原理在于通过软件程序替代人工,自动控制测试仪器(如示波器、电源)执行预设流程,并完成数据采集与分析。这项技术的核心价值在于应对测试复杂度的指数级增长,确保结果可靠性,并显著缩短产品上市时间。从工程实践角度看,实现自动化通常始于仪器控制,其通用语言是SCPI标准命令集,而Python凭借其丰富的库(如PyVISA)成为流行的集成工具。通过构建模块化的测试框架,工程师可以将测试逻辑、仪器驱动与数据管理解耦,从而灵活应对多仪器协同与复杂测试序

weixin_34372728的博客 446

U24时钟信号上升下降沿出现非单调性--简单分析

交换机U24时钟信号上升下降沿出现非单调性--简单分析

qq_45185504的博客 1131

计算机网络核心协议与面试实战:从TCP三次握手到HTTP演进

计算机网络是现代互联网的基石,其核心在于分层协议栈的设计思想。OSI七层模型和TCP/IP四层模型通过解耦各层职责,实现了网络通信的可扩展性。传输层的TCP协议通过三次握手机制确保可靠连接,而UDP则提供低延迟的无连接服务。在应用层,HTTP协议从1.1到3.0的演进不断优化网络性能。理解这些协议原理对于构建高可用系统至关重要,尤其在微服务架构和云原生环境中,网络知识直接影响服务发现、负载均衡等核心功能。本文通过典型面试题解析和Wireshark实战演示,帮助开发者建立系统的网络问题诊断思路。

weixin_30443813的博客 531

在微信小程序中如何引入iconfont

略

sayyy的专栏 4322

【Bug已解决】codex file edit fails / Write operation denied — CodeX CLI 文件编辑失败解决方案

CodeX CLI 编辑文件时报写入被拒绝,本质是沙箱限制或权限不足。文中给出配置允许目录、修复权限、Git stash 管理冲突等完整方案。

一键难忘的博客 4296

从零实现BP神经网络:数学建模中的核心预测与分类工具

神经网络作为机器学习的基础模型,通过模拟人脑神经元连接进行信息处理。其核心原理在于前向传播计算输出与反向传播调整权重,这一过程依赖于梯度下降等优化算法来最小化预测误差。BP神经网络因其结构清晰、易于实现,在解决非线性问题上展现出重要技术价值,尤其适用于数据量适中但关系复杂的场景,如销量预测、客户分类和风险评估。在数学建模竞赛中,掌握其实现细节与调参技巧,能有效提升模型性能。本文以二手车价格预测为例,详细解析了从数据预处理、模型构建到训练评估的全流程,并深入探讨了过拟合、梯度消失等工程实践中的常见问题与解决方

weixin_34184561的博客 295

【06】C#入门到精通——C# 多个 .cs文件项目 同一项目下添加多个 .cs文件

本文介绍了如何将C#游戏开发中的代码从单个.cs文件拆分到多个.cs文件中,以提升代码的可维护性和可读性。文章演示了在Visual Studio中创建Hero类和ShowInfo类的具体步骤:通过右键项目名添加新建类,将原有代码分别剪切到对应的类文件中,并自动生成命名空间。拆分后需要在Program.cs中通过"using"指令引用这些类,最后通过运行测试验证功能正常。这种模块化代码组织方式能有效解决单一文件代码过长、结构混乱的问题。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1135

数学建模实战:基于Python networkx的复杂网络分析与影响力评估

复杂网络分析是研究由节点和边构成的系统结构与功能的重要方法,其核心在于通过图论模型揭示实体间的关联模式。其基本原理是通过计算度中心性、介数中心性等拓扑指标,量化节点在网络中的重要性。这项技术的价值在于能够将抽象的关联关系转化为可计算、可比较的量化特征,从而识别关键节点、预测信息传播路径。在应用场景上,它广泛用于社交网络分析、流行病传播预测、基础设施脆弱性评估以及推荐系统构建。本文以数学建模竞赛为背景,详细复盘了如何利用Python的pandas进行数据处理,并借助networkx库构建网络模型,通过计算多种

weixin_34023982的博客 330

CelebA-HQ数据集下载【详细明了版】分辨率包括【64,128,256,512,1024】

CelebA-HQ 是在ICLR2018上,nVidia发表了一篇名为Progressive Growing of GANs for Improved Quality, Stability, and Variation的论文,文中通过训练高分辨率GAN生成了一个新的人脸数据集CelebA-HQ.CelebA是港科大汤晓鸥组收集的人脸数据集(总共200k图片),包括了人脸特征点(landmark),人脸属性(attribute)等信息,详细介绍参考链接[1]和[2]

zik的博客 1万+

《测控仪器设计课后习题答案-浦昭邦-王宝光

《测控仪器设计课后习题答案-浦昭邦-王宝光 1.1. 测控仪器的概念是什么? 测控仪器则是利用测量和控制的理论,采用机、电、光各种计量测试原理及控制系统与计算机相结合的一种范围广泛的测量仪器。 1.2. 为什么说测控仪器的发展与科学技术发展密切相关? 仪器仪表的用途和重要性— 遍及国民经济各个部门,深入到人民生活的各个角落,仪器仪表中的计量测试仪器与控制仪器统称为测控仪器,可以说测控仪器的水平是科学技术现代化的重要标志。 仪器仪表的用途: 在机械制造业中:对产品的静态与动态性能测试;加工过程的控制与监测;设

无名何许人的博客 2976

网络密度与凝聚子群分析:理论与实战指南

网络密度和凝聚子群分析是复杂网络研究中的基础技术指标。网络密度通过计算实际边数与最大可能边数的比值,量化了节点间连接的紧密程度,适用于社交网络、生物网络等多种场景。凝聚子群分析则能识别网络中的紧密连接群体,常用的k-核分析和社区检测算法在实践中效果显著。这些技术在社交网络分析、推荐系统优化等领域具有重要价值,比如通过识别高密度子群可以优化社区内容分发策略。本文结合Python代码示例和Pajek软件操作,详细解析了网络密度计算和子群检测的工程实践方法。

circularr9834的博客 368

eNSP中玩转Python自动化——解锁网工新姿势(一)

Python自动化一、安装Paramiko模块二、搭建实验环境1、桥接电脑网卡2、配置交换机IP地址交换机配置测试ensp的交换机与电脑的连通性:交换机配置SSHXshell验证三、Python脚本1、执行python脚本2、同步成功 一、安装Paramiko模块 首先安装Python3 然后安装pip解释器 最后安装Paramiko模块 Windows+R打开Cmd,输入命令: pip3 install paramiko 进入python,导入 paramiko模块: import paramiko

LiBai'S BLOG 2万+

Linux 面试宝典

Linux 面试宝典 一、计算机基础部分 1.第一台计算机诞生的时间为:1946年。 2.冯诺依曼体系体系结构。 数字计算机的数制采用二进制,bit位,byte字节 1byte=8bit 计算机应该按照顺序执行 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 3.二进制和十进制转换。 二进制和十进制之间转换可根据下表操作。 2^0=1=1b 2^1=2=10b 2^2=4=100b 2^3=8=1000b 2^4=16=10000b 2^5=32=100000b 2^6=64=

weixin_44295725的博客 1759

Android AVB 分析(十六)5 个例子彻底理解 FEC(Reed-Solomon) 的工作原理

关于 FEC 是如何工作的,一直是我 Android OTA 讨论群中的未解话题,大家基本上都不清楚 Android 上面的 FEC 是如何工作的,为什么在 OTA 升级的最后阶段,FEC 的编码计算会消耗大量的 IO 资源,并持续很长时间。接下来的几篇,我会从一个程序员的角度,演示基于里德所罗门编码的 FEC 到底是如何工作的。

洛奇看世界 666

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

量子变分算法在WSN路由优化中的应用与实现

量子计算作为一种前沿技术,正在逐步改变传统计算范式。量子变分算法(VQA)通过结合参数化量子电路和经典优化器,在当前中等规模含噪声量子(NISQ)设备上展现出强大的实用价值。其核心原理是利用量子叠加态和量子隧穿效应,实现并行搜索和跳出局部最优的能力。在工程实践中,这种混合量子-经典计算架构特别适用于解决NP-hard问题,如无线传感器网络(WSN)中的路由优化。通过将大规模WSN路由问题分解为多个子图,并采用量子算法优化每个子图内的路径,QBSA-DQAS框架在实际测试中相比经典算法显著降低了能耗。这种技术

weixin_34146805的博客 504

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: python实现路由自动聚合(原创)
下一篇: 文件备份程序
thcsip
博客等级 码龄3年 44粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值