生成随机 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 固定后,共有 224=16777216 2 24 = 16777216 2 ^ { 24 } = 16777216 个不同的地址。

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源码下载)相关推荐

  1. 全新圣诞节头像框制作生成微信小程序源码下载支持多模板

    一款可以制作圣诞帽头像的一款小程序 里面有多种模板选择,当然啦里面不只是可以制作圣诞帽 还可以制作贴图头像框,各种卡通,卡哇伊,男神女神标等等模板可以制作的 另外还支持检测你的手机型号,自动辨别手机真 ...

  2. 星际旅行飞船乘坐票制作生成微信小程序源码下载

    这是一款非常票制作生成的一款微信小程序源码 当然啦并不是说制作了就真的能坐飞船一样 这只是一种娱乐啊,请勿当真 支持制作情侣票,闺蜜票,单人票 安装方法: 使用微信开发者工具打开源码 然后提交上传审核 ...

  3. 微信小程序:微信也可以发闪照了闪照制作生成微信小程序源码下载,自定义闪照时间

    这是一款闪照制作的一款微信小程序源码 该源码呢也就是让用户在微信也可以实现QQ上面的闪照功能 用户可以自主上传照片,可以自定义的选择闪照的时间 另外这款小程序还支持流量主模式 这种东西目前在微信还是挺 ...

  4. (已更新)趣味制作生成微信小程序源码下载-安装简单方便

    这是一个diy类型的制作生成小程序源码 里面有多种素材生成,可以用来娱乐吧! 比如有的类型如:退出酒场告知书,喝酒认怂书,等等 小程序安装的话还是挺方便的,特别适合新手 PS:里面的二维码的话小编替换 ...

  5. 2022全新超火超热门模板的姓氏头像制作生成微信小程序源码下载

    这是一款姓氏头像小程序源码 姓氏头像可以说是一个比较热门的一个东西 之前小编也发过好几款姓氏头像小程序源码 但是模板都太单一了,虎年哪一款在这之前还是挺好的因为检查有模板更新 而且还不需要重新更新源码 ...

  6. 威信也可以发闪照了闪照制作生成微信小程序源码下载,自定义闪照时间

    这是一款单照制作的一款微信小程序源码 该源码呢也就是让用户在威信也可以实现Q上面的闪照功能 用户可以自主上传照片,可以自定义的选择闪照的时间 这种东西目前在威信还是挺少见的,用来在朋友面前装装还是挺好 ...

  7. 小程序源码:微信也可以发闪照了闪照制作生成微信小程序源码下载,自定义闪照时间

    这是一款闪照制作的一款微信小程序源码 该源码呢也就是让用户在微信也可以实现QQ上面的闪照功能 用户可以自主上传照片,可以自定义的选择闪照的时间 另外这款小程序还支持流量主模式 这种东西目前在微信还是挺 ...

  8. 小程序源码:闪照制作生成微信小程序源码下载,自定义闪照时间-多玩法安装简单

    这是一款闪照制作的一款微信小程序源码 该源码呢也就是让用户在微信也可以实现QQ上面的闪照功能 用户可以自主上传照片,可以自定义的选择闪照的时间 另外这款小程序还支持流量主模式 这种东西目前在微信还是挺 ...

  9. 爱情保证书制作生成微信小程序源码下载

    这是一款开启保证数生成制作的一款小程序 支持一键生成情侣爱情保证图 只需输入你和另一半姓名,再加上时间即可一键生成 然后长按就可以保存了 安装方法: 使用微信开发者工具打开源码 然后提交上传审核就可以 ...

最新文章

  1. 取消计算机关机设置,旧驱动程序教您如何设置和取消计算机的自动关机命令
  2. python软件菜单如何设计_佩服!我用Python设计了一个签名软件
  3. python-字符串转义符号
  4. 通过Android反编译技术研究国内陌生人社交即时通讯的技术方案
  5. Nexon由Xsolla全球支付服务
  6. 机器学习分类问题中_训练数据类别不均衡怎么解决
  7. 拓端tecdat|R语言使用混合模型进行聚类
  8. 基于Python的校园学生一卡通管理系统
  9. android自定义pickerview,一个非常好用的Android PickerView库
  10. linux 如何清理垃圾文件,清理Linux系统垃圾文件操作方法图文步骤详解
  11. 数显之家快讯:【SHIO世硕心语】智慧城市时代下的智慧标识设计初探
  12. 收藏!2020上半年社区精华教程盘点
  13. 笔记本电脑更换固态硬盘
  14. hadoop出现Permission denied (publickey,password)的问题
  15. Day6 - 头像存储与EasyExcel
  16. PHPWIND得到管理员密码的方法
  17. 【SAP PO】X-DOC:SAP PO 接口配置 REST 服务对接填坑记
  18. Basic4android 的妈妈 Basic4ppc
  19. 数据钻取,详细数据一览无遗!
  20. 响应式编程Rxjava 书籍视频教程

热门文章

  1. 随机矩阵(区别于向量)
  2. SLAM学习 | 单目相机标定(附代码实测可用)
  3. 黑马程序员——基础学习
  4. 解决Android设置环信显示头像和昵称问题
  5. SDNUOJ 1610.L 解救小M|搜索算法DFS/BFS及其实现
  6. html下拉列表初始值为空,html 里select 下拉列表中设置默认值怎么写?
  7. 看完年薪 30W~120W 程序员分别需要掌握的技能栈,我彻底悟了
  8. SCI投稿后不同状态详解
  9. CentOS 6.8 时间同步
  10. 配置windows 2008 R2远程桌面授权,激活授权许可服务器。