MacAddressUtil
MacAddressUtil是Hutool中用于处理MAC地址的工具类,提供了丰富的MAC地址操作功能,包括验证、转换、格式化等。
# 主要功能
- MAC地址验证:验证MAC地址是否合法
- MAC地址格式化:格式化MAC地址为标准格式
- MAC地址转换:在不同格式之间转换
- MAC地址生成:生成MAC地址
- MAC地址比较:比较MAC地址
- 本地MAC地址获取:获取本地网卡MAC地址
- MAC地址解析:解析MAC地址组成部分
# 方法示例
# 示例1:验证MAC地址
验证MAC地址是否合法。
boolean isValid = MacAddressUtil.isValid("00:1B:44:11:3A:B7");
// 输出: true
boolean isValid2 = MacAddressUtil.isValid("invalid-mac-address");
// 输出: false
# 示例2:格式化MAC地址
将MAC地址格式化为标准格式(冒号分隔,大写)。
String formatted = MacAddressUtil.format("001b44113ab7");
// 输出: 00:1B:44:11:3A:B7
# 示例3:获取本地MAC地址
获取本地所有网卡的MAC地址。
List<String> macList = MacAddressUtil.getLocalMacAddresses();
// 输出: 本地所有网卡的MAC地址列表
String firstMac = MacAddressUtil.getFirstLocalMacAddress();
// 输出: 第一个网卡的MAC地址
# 示例4:将MAC地址转换为字节数组
将MAC地址字符串转换为字节数组。
byte[] bytes = MacAddressUtil.toBytes("00:1B:44:11:3A:B7");
// 输出: 长度为6的字节数组
# 示例5:从字节数组转换为MAC地址
将字节数组转换为MAC地址字符串。
byte[] bytes = {(byte)0x00, (byte)0x1B, (byte)0x44, (byte)0x11, (byte)0x3A, (byte)0xB7};
String mac = MacAddressUtil.toString(bytes);
// 输出: 00:1B:44:11:3A:B7
# 示例6:比较MAC地址
比较两个MAC地址是否相等。
boolean equals = MacAddressUtil.equals("00:1B:44:11:3A:B7", "00-1B-44-11-3A-B7");
// 输出: true
# 示例7:生成随机MAC地址
生成一个随机的MAC地址。
String randomMac = MacAddressUtil.randomMac();
// 输出: 随机生成的MAC地址,如: 02:1A:3B:4C:5D:6E
# 注意事项
- MAC地址通常表示为6组16进制数,每组2位,常见分隔符包括冒号(😃、连字符(-)或无分隔符
- 有效的MAC地址长度为12个16进制字符(不包括分隔符)
- 本地MAC地址获取可能需要管理员权限,某些系统可能无法获取
- MAC地址的第一个字节的最低位表示是否为多播地址,第二位表示是否为本地管理地址
- MacAddressUtil提供的方法都是线程安全的,可以在多线程环境下使用
- 在比较MAC地址时,会自动忽略分隔符和大小写差异
- 生成的随机MAC地址会确保是本地管理地址(第二个字节最低位为1)