python mac地址计算
思路是10/16进制的转换和字符串的处理
开始造轮子
1、判断是否是mac地址
正则匹配是否符合条件
1 import re
2
3 def isMac(string):
4 preg = re.compile('^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$')
5 ret = preg.match(string)
6 if ret is None:
7 return False
8 else:
9 return True
2、mac转int
替换掉冒号转16进制
1 def macToInt(mac):
2 mac = mac.replace(":", "")
3 return int(mac, 16)
3、int转mac
转回16进制后进行补位和补冒号
1 def intToMac(intMac):
2 # mac地址每段都是2位 不足位数补0 例如:f:23:54 => 0f:23:54
3 if len(hex(intMac)) % 2 != 0:
4 hexStr = '0{0:X}'.format(intMac)
5 else:
6 hexStr = '{0:X}'.format(intMac)
7
8 i = 0
9 ret = ""
10
11 while i <= len(hexStr) - 2:
12 if ret == "":
13 ret = hexStr[i:(i + 2)]
14 else:
15 ret = "".join([ret, ":", hexStr[i:(i + 2)]])
16 i = i + 2
17 return ret
4、获取下n个mac
转成int后进行数值计算
1 def getNextMac(macAddr, n):
2 return intToMac(macToInt(macAddr) + n)
5、获取上n个mac
转成int后进行数值计算
1 def backOldMac(macAddr, n):
2 return intToMac(macToInt(macAddr) - n)
6、mac地址比较
转换为int后进行值比较
1 def compareMac(macA, macB):
2 return macToInt(macA) >= macToInt(macB)
7、mac地址个数计算
转换成int后进行减法运算
1 def calcMacNum(mac_start, mac_end):
2 mac_start = mac_start.upper()
3 mac_end = mac_end.upper()
4 ret = macToInt(mac_end) - macToInt(mac_start) + 1
5 if ret < 0:
6 ret = 0
7 return ret
8、反转mac地址
mac地址的反序化,去掉冒号后反转字符串然后加回冒号
1 def macReverse(mac):
2 info = mac.split(":")
3 info.reverse()
4 return ":".join(info)
python mac地址计算的更多相关文章
- python mac 环境配置
1, Mac安装 HTMLTestRunner,参考:https://blog.csdn.net/walter_chan/article/details/50555123 cd /Library/Py ...
- python mac环境搭建
安装 virtualenv $ sudo pip install virtualenv 然后建立一个测试目录: $ mkdir testvirtual $ cd testvirtual 就可以成功创建 ...
- python mac下使用多进程报错解决办法
使用pychram运行python web,web使用了多进程 mac下运行会提示如下: may have been in progress in another thread when fork() ...
- python mac下安装虚拟环境
Mac 下 Flask 框架 workon命令找不到 ---- 最终解决方案(详解具体实现操作过程中遇到的坑) Mac 下 Flask 的 全网最详细搭建 1.安装virtualenv和virtual ...
- 2. python Mac 安装 dlib
在macOS上: 从Mac App Store安装 XCode(或安装XCode命令行工具)(最低版本是:xcode8 以上) 有 homebrew 安装 有 CMAKE 安装 基础包 :numpy ...
- Web测试入门:Selenium+Chrome+Python+Mac OS
一.环境配置 Chromedriver 下载及环境配置 url:使用WebDriver在Chrome浏览器上进行测试时,需要从http://chromedriver.storage.googleapi ...
- Python mac安装mysqlclient的一个bug
这是一个来自mysql官方的bug,反正我是看不懂. shuais-MBP:wxapp dandyzhang$ pipenv install mysqlclient Installing mysqlc ...
- Mac Python路径总结
Mac 下Python 可以多版本的并存,并且Python的目录也有好几个,不过总体来说,Mac 自带的有python 还是比较方便的 Mac 系统自带的又Python ,可能Python版本需要更新 ...
- mac下selenium+python环境搭建
selenium2+python的环境搭建主要需要python和selenium 1.python mac下自带了python,可以查看版本.当然可以选择安装其它版本的python. 2.seleni ...
随机推荐
- Gatsby Themes
Gatsby Themes React & SSR gatsby-config.js refs https://www.gatsbyjs.com/docs/themes/ https://ww ...
- convert number or string to ASCII in js
convert number or string to ASCII in js ASCII dictionary generator // const dict = `abcdefghijklmnop ...
- echarts手机端,数据多时可以滚动
<div id="container" style="height: 400px"></div> <script type=&qu ...
- Captain technology INC:全球新能源汽车格局突变
美国能源信息署EIA的统计数据显示,2020年上半年全美含纯电动和插电混动在内的新能源乘用车总销量仅为11.1万辆,同比缩水25%.虽然特斯拉在第三季度靠着13.93万辆的销量迎来了环比387%.同比 ...
- java: 程序包javax.servlet.http不存在
下载好apache tomcat,将lib目录下的servlet-api.jar导入idea即可
- java基础第12期——反射、注解
一. 反射 反射: 将类的各个组成部分封装为其他对象. 1.1 获取class对象的方式 Class.forName("全类名"): 将字节码文件加载进内存,返回class对象 多 ...
- sqlserver日期时间格式转换
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE( ...
- C++中tuple类型
tuple是C++11新标准里的类型.它是一个类似pair类型的模板.pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员.但是每个确 ...
- iOS之CoreBluetooth
思路 手机与设备间的通讯方式CoreBluetooth是比较常见且通用的.在iOS开发中需明晰以下几点 蓝牙4.0最多可联机7个设备,iPhone6以上都是蓝牙4.0 两台iPhone并不直接通过蓝牙 ...
- 基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,因为RFCN用到了VGS加框,因此本篇随笔将给出VGS视频图像子系统的具体说明,便于后面RFCN的细节实现说明. VGS 是视频图形子 ...