java

位置:IT落伍者 >> java >> 浏览文章

java中IP地址转换十进制数实现代码


发布日期:2020年02月02日
 
java中IP地址转换十进制数实现代码

先看实例

代码如下
class ip
{
private static long iptolong(string strip)
//将 形式的ip地址转换成进制整数这里没有进行任何错误处理
{
int j=;
int i=;
long [] ip=new long[];
int position=stripindexof("");
int position=stripindexof(""position+);
int position=stripindexof(""position+);
ip[]=longparselong(stripsubstring(position));
ip[]=longparselong(stripsubstring(position+position));
ip[]=longparselong(stripsubstring(position+position));
ip[]=longparselong(stripsubstring(position+));
return (ip[]<<)+(ip[]<<)+(ip[]<<)+ip[]; //ip***+ip**+ip*+ip
}
private static string longtoip(long longip)
//将进制整数形式转换成形式的ip地址在命令提示符下输入ping l
{
stringbuffer sb=new stringbuffer("");
sbappend(stringvalueof(longip>>>));//直接右移
sbappend("");
sbappend(stringvalueof((longip&xffffff)>>>)); //将高位置然后右移
sbappend("");
sbappend(stringvalueof((longip&xffff)>>>));
sbappend("");
sbappend(stringvalueof(longip&xff));
sbappend("");
return sbtostring();
}
public static void main(string[] args)
{
systemoutprintln("ip地址的各种表现形式rn");
systemoutprint("位二进制形式");
systemoutprintln(longtobinarystring(l));
systemoutprint("十进制形式");
systemoutprintln(iptolong(""));
systemoutprint("普通形式");
systemoutprintln(longtoip(l));
}
}

运行结果

ip地址的各种表现形式

位二进制形式
十进制形式
普通形式

输出完成 (耗时 秒) 正常终止

我们再一步步分开来分析一下
知识点一个二进制数按位左移n位就是把该数的值乘以的n次方

二进制除二即右移一位

IP地址转换为整数

原理IP地址每段可以看成是位无符号整数即把每段拆分成一个二进制形式组合起来然后把这个二进制数转变成

一个无符号为整数

举例一个ip地址为

每段数字 相对应的二进制数

组合起来即为 转换为进制就是即该IP地址转换后的数字就是它了

代码如下
public class Ip {
public static void main(String[] args) {
Systemoutprint(ipint(""));
}

public static long ipint(String ip) {
String[] items = ipsplit("");
return LongvalueOf(items[]) <<
| LongvalueOf(items[]) <<
| LongvalueOf(items[]) <<
| LongvalueOf(items[]);
}

}

整数转换为IP地址

原理把这个整数转换成一个位二进制数从左到右位进行一下分割得到位的二进制数把这些二进制数转换成整数然后加上””就是这个ip地址了

举例

二进制表示形式为

分割成四段分别转换为整数后加上“”就得到了

代码如下

public class Ip {
public static void main(String[] args) {
Systemoutprint(intip());
}

public static String intip(long ipInt) {
StringBuilder sb = new StringBuilder();
sbappend(ipInt & xFF)append("");
sbappend((ipInt >> ) & xFF)append("");
sbappend((ipInt >> ) & xFF)append("");
sbappend((ipInt >> ) & xFF);
return sbtoString();
}

}

               

上一篇:Java设计模式之Iterator模式介绍

下一篇:高性能高弹性JSP和Servlet性能优化