将 MacAddress 转换为 IPv6 Link 本地 Java
Convert MacAddress to IPv6 Link Local in Java
我需要将 Mac 地址转换为 IPv6 Link
本地地址。
这个link-local IPv6
是从NIC’s
mac地址推断出来的。
转换过程如下。
取mac地址:例如52:74:f2:b1:a8:7f
中间丢ff:fe:52:74:f2:ff:fe:b1:a8:7f
重新格式化为 IPv6 表示法 5274:f2ff:feb1:a87f
将第一个八位字节从十六进制转换为二进制:52 -> 01010010
反转索引 6 处的位(从 0 开始计数):01010010 -> 01010000
将八位字节转换回十六进制:01010000 -> 50
用新计算的八位字节替换第一个八位字节:5074:f2ff:feb1:a87f
添加 link-local 前缀:fe80::5074:f2ff:feb1:a87f
这似乎是很多特定的字符串操作和数字系统之间的转换。
我一直在 Java 中寻找一个实用程序 class,它可以帮助我以更有效的方式做同样的事情。
我看到 Java 在 InetAddress
中有方法来确定所讨论的地址是否是 link 本地地址。
IPAddress Java library 有方法可以做到这一点。免责声明:我是那个图书馆的项目经理。
这是使用您的示例 MAC 地址的示例代码 52:74:f2:b1:a8:7f
String str = "52:74:f2:b1:a8:7f";
try {
MACAddress mac = new MACAddressString(str).toAddress();
IPv6Address linkLocal = mac.toLinkLocalIPv6();
System.out.println("converted " + mac + " to IPv6 link local " + linkLocal);
} catch(AddressStringException e) {
// handle invalid address string here
}
输出为:
converted 52:74:f2:b1:a8:7f to IPv6 link local fe80::5074:f2ff:feb1:a87f
更多 examples 在 wiki 中。
我需要将 Mac 地址转换为 IPv6 Link
本地地址。
这个link-local IPv6
是从NIC’s
mac地址推断出来的。
转换过程如下。
取mac地址:例如
52:74:f2:b1:a8:7f
中间丢ff:fe:
52:74:f2:ff:fe:b1:a8:7f
重新格式化为 IPv6 表示法
5274:f2ff:feb1:a87f
将第一个八位字节从十六进制转换为二进制:
52 -> 01010010
反转索引 6 处的位(从 0 开始计数):
01010010 -> 01010000
将八位字节转换回十六进制:
01010000 -> 50
用新计算的八位字节替换第一个八位字节:
5074:f2ff:feb1:a87f
添加 link-local 前缀:
fe80::5074:f2ff:feb1:a87f
这似乎是很多特定的字符串操作和数字系统之间的转换。
我一直在 Java 中寻找一个实用程序 class,它可以帮助我以更有效的方式做同样的事情。
我看到 Java 在 InetAddress
中有方法来确定所讨论的地址是否是 link 本地地址。
IPAddress Java library 有方法可以做到这一点。免责声明:我是那个图书馆的项目经理。
这是使用您的示例 MAC 地址的示例代码 52:74:f2:b1:a8:7f
String str = "52:74:f2:b1:a8:7f";
try {
MACAddress mac = new MACAddressString(str).toAddress();
IPv6Address linkLocal = mac.toLinkLocalIPv6();
System.out.println("converted " + mac + " to IPv6 link local " + linkLocal);
} catch(AddressStringException e) {
// handle invalid address string here
}
输出为:
converted 52:74:f2:b1:a8:7f to IPv6 link local fe80::5074:f2ff:feb1:a87f
更多 examples 在 wiki 中。