我想将Ipv6地址转换为如下所示的格式:
IPv6:254.128.0.0.0.0.0.0.0.0.0.0.28.219.80.177
十六进制值:fe80 :: 1cdb:50b1 / 64
(获得-的结果:http://www.gestioip.net/cgi-bin/subnet_calculator.cgi]
代码:
str = value.toString(16);
int len = str.length();
while(len < 32) {
str = "0" + str;
len++;
}
addrStr = new IPAddressString(str);
System.out.println(addrStr.getAddress());
请让我知道用Java获取以上输出的过程是什么
String dottedToColons(String ipv6) {
if (ipv6.contains(".")) {
String[] bytes = ipv6.split("\\.");
if (bytes.length != 16) {
throw new IllegalArgumentException("16 numbers expected i.o. " + bytes.length);
}
StringBuilder words = new StringBuilder();
for (int i = 0; i < 8; ++i) {
int b0 = Integer.parseInt(bytes[2*i]);
int b1 = Integer.parseInt(bytes[2*i + 1]);
String word = Integer.toHexString((b0 << 8) | b1);
if (i != 0) {
words.append(':');
}
words.append(word);
}
ipv6 = words.toString.replaceFirst("(\\:0)+\\:", "::") + "/64";
}
return ipv6;
}