Java IPv6 to Long Array Conversion: Efficient Code Example
以下是将IPv6地址转换为long数组的Java代码示例:
import java.math.BigInteger;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class IPv6ToLongArray {
public static long[] toLongArray(String ipv6) throws UnknownHostException {
InetAddress inetAddr = InetAddress.getByName(ipv6);
if (!(inetAddr instanceof Inet6Address)) {
throw new IllegalArgumentException('Not an IPv6 address');
}
byte[] bytes = inetAddr.getAddress();
ByteBuffer buffer = ByteBuffer.wrap(bytes);
buffer.order(ByteOrder.BIG_ENDIAN);
long[] longArray = new long[2];
longArray[0] = buffer.getLong();
longArray[1] = buffer.getLong();
return longArray;
}
public static void main(String[] args) throws UnknownHostException {
String ipv6 = '2001:db8:85a3:0:0:8a2e:370:7334';
long[] longArray = toLongArray(ipv6);
System.out.println('Long array: ' + longArray[0] + ', ' + longArray[1]);
}
}
该示例使用Java的InetAddress类将IPv6地址转换为字节数组,然后使用ByteBuffer类将字节数组转换为long数组。注意,IPv6地址由8个16位的部分组成,因此将其转换为long数组时需要使用两个64位的long值。
原文地址: https://www.cveoy.top/t/topic/nGgZ 著作权归作者所有。请勿转载和采集!