IPConvert.java类的主要作用是将ip(ipv6\ipv4)转换成16个字节的数组,其中ipv4的转换是先将v4地址转换成v6再转换成长度是16的字节数组
package com.cvicse.naba.common.utils;
/**
*
* 描述:
*
* ip转换byte数组管理类。
*
* 创建日期:2012-7-25 下午3:34:00
*
* @author:Wendy
* @update:$Date: 2012-07-25 18:14:40 +0800 (Wed, 25 Jul 2012) $
* @version:$Revision: 779 $
* @since 1.0.0
*/
public class IPConvert {
private static final int IPV6Length = 8; // IPV6地址的分段
private static final int IPV4Length = 4; // IPV6地址分段
private static final int IPV4ParmLength = 2; // 一个IPV4分段占的长度
private static final int IPV6ParmLength = 4; // 一个IPV6分段占的长
/**
* IPV6、IPV4转化为十六进制串
*
* @param ipAddress
* @return
*/
private static String buildKey(String ipAddress) {
String Key = "";
// ipv4标识 。判断是否是ipv4地址
int dotFlag = ipAddress.indexOf(".");
// ipv6标识 。判断是否是ipv6地址
int colonFlag = ipAddress.indexOf(":");
// ipv6标识 。判断是否是简写的ipv6地址
int dColonFlag = ipAddress.indexOf("::");
// 将v6或v4的分隔符用&代替
ipAddress = ipAddress.replace(".", "&");
ipAddress = ipAddress.replace(":", "&");
// ipv4 address。将ipv4地址转换成16进制的形式
if (dotFlag != -1 && colonFlag == -1) {
String[] arr = ipAddress.split("&");
// 1、 ipv4转ipv6,前4组数补0或f
for (int i = 0; i < IPV6Length - IPV4ParmLength; i++) {
// 根据v4转v6的形式,除第4组数补ffff外,前3组数补0000
if (i == IPV6Length - IPV4ParmLength - 1) {
Key += "ffff";