Java随机生成Mac地址(GitHub源码下载)
来源:互联网 发布:南风知我意温南百度云 编辑:程序博客网 时间:2024/06/06 09:32
生成随机 Mac 地址
这段时间做项目,涉及到虚拟机 Mac 地址生成,网上找了一些 Java 随机生成 Mac 地址的代码,大多都是从 {‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘a’, ‘b’, ‘c’, ‘e’, ‘d’, ‘f’} 随机取一位拼成 Mac 地址字符串,实际上这种方式不符合 Mac 地址定义,下面将给出我随机生成 Mac 地址的方法,该方法参考相关 python 代码片段
什么是 Mac 地址
MAC(Media Access Control)地址,称为物理地址、硬件地址。每块网卡有唯一的 Mac 地址。
通常 Mac 地址是固定的。
Mac 地址采用 16 进制数表示,一个 2 位 16 进制数为 1byte,共 6byte(48bit)。
Mac 地址的前 3byte 由 IEEE 的注册管理机构 RA 负责给不同厂家分配,被称为 OUI(Organizationally Unique Identifier),中文译作组织唯一的标识符。后 3byte 由各厂家自行指派(本文为算法随机生成),称为扩展标识符。
从上面 Mac 地址的构成分析可得出,当 OUI 固定后,共有
Mac 地址生成原理
前面分析了 Mac 地址由 6 个 2 位 16 进制数组成,如 52:54:00:a3:07:18。该地址的前 3 位 52:54:00 由 OUI 分配给 qemu/kvm,我们只需随机生成后 3 位。
我们知道的是一个 2 位 16 进制数铁定是 0x00-0xff 中的一位,那么问题就简单了,我们使用 Java 中的随机数类 Random 的方法 nextInt(int bound) 在 0x00-0xff 范围内随机取一个整数就行了。
0x00-0xff 如果用 10 进制数表示则是 0-255 ,因此 在 0-255 范围内随机取一个整数和 0x00-0xff 效果是一样的。
随机生成Mac 地址代码片段
根据上面 Mac 地址生成原理得出下面的 Java 代码片段。
private static String SEPARATOR_OF_MAC = ":"; /** * Generate a random MAC address for qemu/kvm * 52-54-00 used by qemu/kvm * The remaining 3 fields are random, range from 0 to 255 * * @return MAC address string */ public String randomMac4Qemu() { Random random = new Random(); String[] mac = { String.format("%02x", 0x52), String.format("%02x", 0x54), String.format("%02x", 0x00), String.format("%02x", random.nextInt(0xff)), String.format("%02x", random.nextInt(0xff)), String.format("%02x", random.nextInt(0xff)) }; return String.join(SEPARATOR_OF_MAC, mac); }
Github 源码下载:random-mac
- Java随机生成Mac地址(GitHub源码下载)
- 随机MAC地址生成
- openwrt生成随机mac地址
- bash 随机生成mac地址及qemu指定随机mac
- uboot生成随机的MAC地址
- Java源码地址下载
- Java源码下载地址
- java 随机生成mac di'zhi
- github生成随机字符串
- java浏览器文件下载实例(附源码下载地址)
- 随机设置MAC地址
- JAVA(android)提取WIFI客流探针MAC地址源码
- 抓取github上的android源码地址做批量下载
- 安卓各个版本系统的源码github下载地址
- [thinkPHP5项目实战_31]结语和GitHub源码下载地址
- Java批量生成Mac地址到文件
- Java实现的推箱子游戏,带源码下载地址和地图生成程序
- java JDK各版本源码下载地址
- Python3.x爬虫下载网页图片
- 守护线程
- Java基础应用之运算符(位运算加密)
- Redis Sentinel机制与用法(一)
- 「转载」Linux线程死锁
- Java随机生成Mac地址(GitHub源码下载)
- SQL语句之增删查改、多表查询,模糊查询
- Mysql慢查询日志的开启与应用
- Redis Sentinel 机制与用法(二)
- mysql安装远程连接失败404 解决办法
- HDU 2089 不要62——数位dp
- eclipse汉化
- Spring IOC 容器
- 图论基本概念2