思路是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地址计算的更多相关文章

  1. python mac 环境配置

    1, Mac安装 HTMLTestRunner,参考:https://blog.csdn.net/walter_chan/article/details/50555123 cd /Library/Py ...

  2. python mac环境搭建

    安装 virtualenv $ sudo pip install virtualenv 然后建立一个测试目录: $ mkdir testvirtual $ cd testvirtual 就可以成功创建 ...

  3. python mac下使用多进程报错解决办法

    使用pychram运行python web,web使用了多进程 mac下运行会提示如下: may have been in progress in another thread when fork() ...

  4. python mac下安装虚拟环境

    Mac 下 Flask 框架 workon命令找不到 ---- 最终解决方案(详解具体实现操作过程中遇到的坑) Mac 下 Flask 的 全网最详细搭建 1.安装virtualenv和virtual ...

  5. 2. python Mac 安装 dlib

    在macOS上: 从Mac App Store安装 XCode(或安装XCode命令行工具)(最低版本是:xcode8 以上) 有 homebrew 安装 有 CMAKE 安装 基础包 :numpy ...

  6. Web测试入门:Selenium+Chrome+Python+Mac OS

    一.环境配置 Chromedriver 下载及环境配置 url:使用WebDriver在Chrome浏览器上进行测试时,需要从http://chromedriver.storage.googleapi ...

  7. Python mac安装mysqlclient的一个bug

    这是一个来自mysql官方的bug,反正我是看不懂. shuais-MBP:wxapp dandyzhang$ pipenv install mysqlclient Installing mysqlc ...

  8. Mac Python路径总结

    Mac 下Python 可以多版本的并存,并且Python的目录也有好几个,不过总体来说,Mac 自带的有python 还是比较方便的 Mac 系统自带的又Python ,可能Python版本需要更新 ...

  9. mac下selenium+python环境搭建

    selenium2+python的环境搭建主要需要python和selenium 1.python mac下自带了python,可以查看版本.当然可以选择安装其它版本的python. 2.seleni ...

随机推荐

  1. egg.js 如何禁用 sensors data

    egg.js 如何禁用 sensors data holy shit http://localhost:7001/product/create const json = {"id" ...

  2. Node.js & BFF & FaaS

    Node.js & BFF & FaaS server https://github.com/PacktPublishing/Node.js-Web-Development-Fourt ...

  3. PAA房产,一家有温度的房产公司

    PAUL ADAMS ARCHITECT房产(以下简称PAA,公司编号:07635831)对每一个客户从心出,为他们选择优质房源,为他们缔造家的温暖.PAA房产,是一家有温度的房产公司. PAA房产( ...

  4. NGK以强大的创新能力赋予NGK公链超级实用的特性

    公链从大趋势看是一个不断迭代的过程,不管是共识算法.网络架构.开发者协议都在一代一代不断完善跟创新. NGK公链作为公链赛道上的后起之秀,对于主流公链技术的局限性以及下一代公链技术的发展方向都有非常清 ...

  5. MySQL全面瓦解22:索引的介绍和原理分析

    索引的定义 MySQL官方对索引的定义为:索引(Index)是协助MySQL高效获取数据的数据结构. 本质上,索引的目的是为了提高查询效率,通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时 ...

  6. React Native选择器组件-react-native-slidepicker

    react-native-slidepicker 一个纯 JavaScript 实现的的 React Native 组件,用于如地址,时间等分类数据选择的场景. github: https://git ...

  7. C++算法代码——n的全排列/全排列问题

    题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1541 题目描述 输入一个整数n,输出的n(n<=100)的全排列. 输入 输入 ...

  8. Python 股票市场分析实战

    目标: 1.股票数据获取 2.历史趋势分析及可视化 3.风险分析 实验数据:来源于Yahoo Finance / Stooq,该网站提供了很多API接口,本文用的工具是pandas-datareade ...

  9. [Python] 茎叶图和复合饼图的画法

    目录 茎叶图 复合饼图 茎叶图 from itertools import groupby nums2=[225, 232,232,245,235,245,270,225,240,240,217,19 ...

  10. eclipse中将项目加载到tocat报错:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules

    第一种解决方法:只需要找到导入项目的配置文件即可,举个栗子:D:\公司\iptv_gx\iptv_gx\.settings\org.eclipse.wst.common.project.facet.c ...