需求

在某应用中,需要根据一定的规则生成随机的IP地址,规则类似于192.168.11.0/24这样的CIDR形式给出。

实现

经过艰苦卓绝的调试,下面的代码是可以用的:

RANDOM_IP_POOL=['192.168.10.222/0']

def __get_random_ip():

str_ip = RANDOM_IP_POOL[random.randint(0,len(RANDOM_IP_POOL) - 1)]

str_ip_addr = str_ip.split('/')[0]

str_ip_mask = str_ip.split('/')[1]

ip_addr = struct.unpack('>I',socket.inet_aton(str_ip_addr))[0]

mask = 0x0

for i in range(31, 31 - int(str_ip_mask), -1):

mask = mask | ( 1 << i)

ip_addr_min = ip_addr & (mask & 0xffffffff)

ip_addr_max = ip_addr | (~mask & 0xffffffff)

return socket.inet_ntoa(struct.pack('>I', random.randint(ip_addr_min, ip_addr_max)))

生成的结果如:

192.168.10.175 192.168.10.29

192.168.10.30 192.168.10.207

192.168.10.248 192.168.10.145

192.168.10.168 192.168.10.223

192.168.10.66 192.168.10.138

192.168.10.99 192.168.10.136

192.168.10.147 192.168.10.244

192.168.10.73 192.168.10.180

备注

(mask & 0xffffffff)这一用法,目的在于消除mask上32位以上的高位数据。由于mask是IPv4的掩码,所以不需要32位以上的数据。这一问题在mask取反之后比较明显。由于mask是一个32位以上的数(有可能是64位),取反之后,高位全部为1,计算的结果就不正确了。因此,在使用之前,需要利用(mask & 0xffffffff)清除高位。

供各位读者参考。

python随机生成一个地区地址_利用Python生成随机的IP地址相关推荐

  1. python如何创建一个文件夹_利用Python怎么创建一个文件夹

    利用Python怎么创建一个文件夹 发布时间:2020-12-08 14:48:04 来源:亿速云 阅读:91 作者:Leah 这期内容当中小编将会给大家带来有关利用Python怎么创建一个文件夹,文 ...

  2. 电子邮件服务器的ip地址_可用的不同类型的IP地址

    有几种不同类型的IP地址可用.尽管无论哪种类型,IP地址的结构都是相同的,但它们的作用不同.例如,您有公用IP地址,专用IP地址,静态IP地址和动态IP地址. 动态和静态之间的区别是动态IP地址会更改 ...

  3. python做一个星座分析_利用python输出星座的方法

    利用python输出星座的方法 发布时间:2020-09-23 12:12:36 来源:亿速云 阅读:84 作者:小新 这篇文章将为大家详细讲解有关利用python输出星座的方法,小编觉得挺实用的,因 ...

  4. python实现app自动签到器_利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化.但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了. 有需要Python学习资料的小伙伴吗?小编整理[ ...

  5. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  6. python画二维温度云图_利用python画出词云图

    本文将介绍如何利用python中相应的模块画出词云图.首先给出效果图: 其中词云图中的词汇是对手机短信中的垃圾短信的统计,字体越大表示在垃圾短信中出现的频次越高.下面给出具体的步骤. 读取" ...

  7. python分析pdf年报 货币现金_利用python tushare pandas进行财报分析

    一.财报分析 大家在购买股票的时候,已经不只是凭感觉去买了,基本上都会对一个股票进行深入的分析. 毕竟购买股票还是一项风险性较高的投资,需要在较为熟悉以后才能去开展,不能蛮干,钱也都不是天上掉下来的. ...

  8. python贪吃蛇最简单代码_利用python实现简易版的贪吃蛇游戏(面向python小白)

    引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的 ...

  9. python 16bit转8bit的工具_利用python读取YUV文件 转RGB 8bit/10bit通用

    注:本文所指的YUV均为YUV420中的I420格式(最常见的一种),其他格式不能用以下的代码. 位深为8bit时,每个像素占用1字节,对应文件指针的fp.read(1): 位深为10bit时,每个像 ...

最新文章

  1. CentOS下的Autoconf和AutoMake(实践篇) 2
  2. C#图片处理示例(裁剪,缩放,清晰度,水印)
  3. 文巾解题 190. 颠倒二进制位
  4. Oracle大象,大象工程(石头剪刀布PK游戏)
  5. mysql scrapy 重复数据_MySQL大数据量表中删除重复记录
  6. unity制作预制体,动态加载预制体,实用资源的导出
  7. Sql Server 2008R2 备份文件还原数据库
  8. OFDM CP和子载波间隔的取值原则
  9. 试试Live Witer
  10. 【SPIE独立出版∣IEEE Fellow特邀主讲】人工智能、网络等多主题征稿
  11. 中国知音导出mysql_央视社会发展纪录片《从〈中国〉到中国 From Chung Kuo to China》全5集 720P/1080i高清纪录片资源百度云盘下载...
  12. Python-教你用requests爬取网易云课堂热门课程。
  13. 自习室图书馆座位预约小程序 开题报告(基于微信小程序毕业设计题目选题课题)
  14. python爬取视频--下载2019巴菲特股东大会直播视频
  15. Arthas-thread命令定位线程死锁
  16. [__NSCFNumber isEqualToString:]: unrecognized selector sent to instance 0x7a97d4c0'报错
  17. 算法手撕代码61~65
  18. 这道超级简单的题目没有任何输入。你只需要把这句很重要的话 —— “I‘m gonna WIN!”——连续输出三遍就可以了。注意每遍占一行,除了每行的回车不能有任何多余字符。
  19. 使用免费工具WCAT为Web应用程序进行压力测试
  20. 分治算法 --- 详解

热门文章

  1. 今天我才明白了泛型,泛型类 泛型方法
  2. MNIST机器学习入门【学习笔记】
  3. REMIX与LOCALHOST相连
  4. marathon传参一
  5. kafka(一)设计分析
  6. [原]shader实现矩形圆角
  7. ASP.NET防止用户多次登录的方法
  8. OBJECTPROPERTY函数使用
  9. 全新防火墙6.0 单条PPPOE(ADSL)上网配置
  10. Windows安全加固系列