ip4转ip6

public static void main(String[] args) {
String ip4="192.168.0.168";//是由十进制组成(32位二进制组成)
String ip6="";
//ip6一般是有8组数的16进制数组成-(128位二进制组成)
//::代表前面的数全部是0
//ip4已经是32位了,在它前面再加上96位二进制就变为了ip6地址格式了,所以ip6的前96位全部可以为0表示也就是(::)
String ip1="::192.168.0.168";//现在只需把192.168.0.168变为16进制即可--ip6地址每个冒号间是一个16位的二进制,而ip4一个点号之间是八位的二进制数,所以两个逗号变为一个冒号
//变为如下格式
String ip2="::[192][168]:[0][168]";//现在只需要把中括号的变为十六进制就可以了
String str1="";//为[192][168]的十六进制
String str2="";//为[0][168]的十六进制
String [] arrayIp=ip4.split("\\.");//
if(arrayIp!=null && arrayIp.length>0){
for(int i=0;i if(i==0){
int sz=Integer.parseInt(arrayIp[i]);
if(sz==0){
str1="00";
}else if(0 if(0<(sz%16) && (sz%16)<=9){
str1="0"+sz;
}else{
if(sz==10){
str1="0A";
}else if(sz==11){
str1="0B";
}else if(sz==12){
str1="0C";
}else if(sz==13){
str1="0D";
}else if(sz==14){
str1="0E";
}else if(sz==15){
str1="0F";
}
}
}else{
String a0="";//前一个数
String a1="";//后一个数
//因为ip4最大的数字是0-255
a0=(sz/16)+"";//第一个数等于除数
a1=(sz%16)+"";//第二个数等于余数
if("10".equals(a0)){
a0="A";
}else if("11".equals(a0)){
a0="B";
}else if("12".equals(a0)){
a0="C";
}else if("13".equals(a0)){
a0="D";
}else if("14".equals(a0)){
a0="E";
}else if("15".equals(a0)){
a0="F";
}
if("10".equals(a1)){
a0="A";
}else if("11".equals(a1)){
a0="B";
}else if("12".equals(a1)){
a0="C";
}else if("13".equals(a1)){
a0="D";
}else if("14".equals(a1)){
a0="E";
}else if("15".equals(a1)){
a0="F";
}
str1=a0+a1;
}
}else if(i==1){
int sz=Integer.parseInt(arrayIp[i]);
if(sz==0){
str1=str1+"00";
}else if(0 if(0<(sz%16) && (sz%16)<=9){
str1=str1+"0"+sz;
}else{
if(sz==10){
str1=str1+"0A";
}else if(sz==11){
str1=str1+"0B";
}else if(sz==12){
str1=str1+"0C";
}else if(sz==13){
str1=str1+"0D";
}else if(sz==14){
str1=str1+"0E";
}else if(sz==15){
str1=str1+"0F";
}
}
}else{
String a0="";//前一个数
String a1="";//后一个数
//因为ip4最大的数字是0-255
a0=(sz/16)+"";//第一个数等于除数
a1=(sz%16)+"";//第二个数等于余数
if("10".equals(a0)){
a0="A";
}else if("11".equals(a0)){
a0="B";
}else if("12".equals(a0)){
a0="C";
}else if("13".equals(a0)){
a0="D";
}else if("14".equals(a0)){
a0="E";
}else if("15".equals(a0)){
a0="F";
}
if("10".equals(a1)){
a0="A";
}else if("11".equals(a1)){
a0="B";
}else if("12".equals(a1)){
a0="C";
}else if("13".equals(a1)){
a0="D";
}else if("14".equals(a1)){
a0="E";
}else if("15".equals(a1)){
a0="F";
}
str1=str1+a0+a1;
}
}else if(i==2){
int sz=Integer.parseInt(arrayIp[i]);
if(sz==0){
str2="00";
}else if(0 if(0<(sz%16) && (sz%16)<=9){
str2="0"+sz;
}else{
if(sz==10){
str2="0A";
}else if(sz==11){
str2="0B";
}else if(sz==12){
str2="0C";
}else if(sz==13){
str2="0D";
}else if(sz==14){
str2="0E";
}else if(sz==15){
str2="0F";
}
}
}else{
String a0="";//前一个数
String a1="";//后一个数
//因为ip4最大的数字是0-255
a0=(sz/16)+"";//第一个数等于除数
a1=(sz%16)+"";//第二个数等于余数
if("10".equals(a0)){
a0="A";
}else if("11".equals(a0)){
a0="B";
}else if("12".equals(a0)){
a0="C";
}else if("13".equals(a0)){
a0="D";
}else if("14".equals(a0)){
a0="E";
}else if("15".equals(a0)){
a0="F";
}
if("10".equals(a1)){
a0="A";
}else if("11".equals(a1)){
a0="B";
}else if("12".equals(a1)){
a0="C";
}else if("13".equals(a1)){
a0="D";
}else if("14".equals(a1)){
a0="E";
}else if("15".equals(a1)){
a0="F";
}
str2=a0+a1;
}
}else if(i==3){
int sz=Integer.parseInt(arrayIp[i]);
if(sz==0){
str2=str2+"00";
}else if(0 if(0<(sz%16) && (sz%16)<=9){
str2=str2+"0"+sz;
}else{
if(sz==10){
str2=str2+"0A";
}else if(sz==11){
str2=str2+"0B";
}else if(sz==12){
str2=str2+"0C";
}else if(sz==13){
str2=str2+"0D";
}else if(sz==14){
str2=str2+"0E";
}else if(sz==15){
str2=str2+"0F";
}
}
}else{
String a0="";//前一个数
String a1="";//后一个数
//因为ip4最大的数字是0-255
a0=(sz/16)+"";//第一个数等于除数
a1=(sz%16)+"";//第二个数等于余数
if("10".equals(a0)){
a0="A";
}else if("11".equals(a0)){
a0="B";
}else if("12".equals(a0)){
a0="C";
}else if("13".equals(a0)){
a0="D";
}else if("14".equals(a0)){
a0="E";
}else if("15".equals(a0)){
a0="F";
}
if("10".equals(a1)){
a0="A";
}else if("11".equals(a1)){
a0="B";
}else if("12".equals(a1)){
a0="C";
}else if("13".equals(a1)){
a0="D";
}else if("14".equals(a1)){
a0="E";
}else if("15".equals(a1)){
a0="F";
}
str2=str2+a0+a1;
}
}

}
}
ip6="::"+str1+":"+str2;
}

你可能感兴趣的:(java)