在Java中将MacAddress转换为IPv6本地链路
我需要将Mac地址转换为在Java中将MacAddress转换为IPv6本地链路,java,mac-address,link-local,Java,Mac Address,Link Local,我需要将Mac地址转换为IPv6链接本地地址。 此链路本地IPv6是从NIC的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->5
IPv6链接
本地地址。
此链路本地IPv6
是从NIC的
mac地址推断出来的。
转换程序如下所示
52:74:f2:b1:a8:7f
52:74:f2:ff:fe:b1:a8:7f
5274:f2ff:feb1:a87f
52->01010010
01010010->01010000
01010000->50
5074:f2ff:feb1:a87f
fe80::5074:f2ff:feb1:a87f
InetAddress
中有方法来确定所讨论的地址是否是本地链接。有方法可以做到这一点。免责声明:我是该库的项目经理
下面是使用示例MAC地址52:74:f2:b1:a8:7f的示例代码
String str=“52:74:f2:b1:a8:7f”;
试一试{
MACAddress mac=新的MACAddress字符串(str).toAddress();
ipv6地址linkLocal=mac.toLinkLocalIPv6();
System.out.println(“将“+mac+”转换为IPv6链路本地“+linkLocal”);
}catch(AddressStringe异常){
//在此处处理无效的地址字符串
}
输出为:
converted 52:74:f2:b1:a8:7f to IPv6 link local fe80::5074:f2ff:feb1:a87f
wiki中有更多内容。有方法可以做到这一点。免责声明:我是该库的项目经理
下面是使用示例MAC地址52:74:f2:b1:a8:7f的示例代码
String str=“52:74:f2:b1:a8:7f”;
试一试{
MACAddress mac=新的MACAddress字符串(str).toAddress();
ipv6地址linkLocal=mac.toLinkLocalIPv6();
System.out.println(“将“+mac+”转换为IPv6链路本地“+linkLocal”);
}catch(AddressStringe异常){
//在此处处理无效的地址字符串
}
输出为:
converted 52:74:f2:b1:a8:7f to IPv6 link local fe80::5074:f2ff:feb1:a87f
wiki中还有更多内容。实现了您自己的
Inet6Address的生成器并使用了它?但我们仍然需要进行拆分、替换、重新连接、分组、转换和位反转。这似乎很符合逻辑。我很惊讶没有相同的实用程序。您有增强的字符串操作实用程序,如StringBuilder
或StringBuffer
。实现您自己的Inet6Address
生成器并使用?但我们仍然需要进行拆分、替换、重新连接、分组、转换和位反转。这似乎很符合逻辑。我很惊讶没有相同的实用程序。您有增强的字符串操作实用程序,如StringBuilder
或StringBuffer
。很好的贡献,您的库是健壮的,经过了良好的测试。我投了更高的票,我认为这应该是被接受的答案,而不是试图用我提供的草稿来重新发明轮子。很好的贡献,你的库是健壮的,经过了很好的测试。我投了更高的票,我认为这应该是被接受的答案,而不是试图用我提供的草案重新设计轮子。