java ip int_IP地址和int互转

/***@author: yqq

* @date: 2019/5/8

* @description: ip地址与int之间互换

*https://mp.weixin.qq.com/s?__biz=MzIzMzgxOTQ5NA==&mid=2247486894&idx=1&sn=bf17d404a989c3bb202241326d94647b&chksm=e8fe91a7df8918b1708f0cb759c6f9411d43ac22c257d56cc9191f74dc5eadd666862bb4bd92&scene=0&xtrack=1#rd*/

public classIPToString {/**&:全是1则为1,否则为 0

|:只要一个为1则为1,否则为0

十进制转成十六进制:

Integer.toHexString(int i)

十进制转成八进制

Integer.toOctalString(int i)

十进制转成二进制

Integer.toBinaryString(int i)

十六进制转成十进制

Integer.valueOf("FFFF",16).toString()

八进制转成十进制

Integer.valueOf("876",8).toString()

二进制转十进制

Integer.valueOf("0101",2).toString()*/

public static voidmain(String[] args) {

String[] ips4Test= new String[]{"0.0.0.0", "127.0.0.1","192.168.1.1", "255.0.0.255", "255.255.255.255"};for(String ip : ips4Test) {

test(ip);

}

}public static voidtest(String ip) {int ipInt =ip2Int(ip);

String ipString=int2Ip(ipInt);

System.out.println("用于测试的ip地址: " + ip + ", int表示: " + ipInt + ", 二进制: " +Long.toBinaryString(ipInt)+ ", 转回String: " + ipString + ",与测试 ip 地址是否相等: " +ip.equals(ipString));

}/*** 将 ip 字符串转换为 int 类型的数字

*

* 思路就是将 ip 的每一段数字转为 8 位二进制数,并将它们放在结果的适当位置上

*

*@paramipString ip字符串,如 127.0.0.1

*@returnip字符串对应的 int 值*/

public static intip2Int(String ipString) {//取 ip 的各段

String[] ipSlices = ipString.split("\\.");int rs = 0;for (int i = 0; i < ipSlices.length; i++) {//将 ip 的每一段解析为 int,并根据位置左移 8 位

int intSlice = Integer.parseInt(ipSlices[i]) << 8 *i;//求与

rs = rs |intSlice;

}returnrs;

}/*** 将 int 转换为 ip 字符串

*

*@paramipInt 用 int 表示的 ip 值

*@returnip字符串,如 127.0.0.1*/

public static String int2Ip(intipInt) {

String[] ipString= new String[4];for (int i = 0; i < 4; i++) {//每 8 位为一段,这里取当前要处理的最高位的位置

int pos = i * 8;//取当前处理的 ip 段的值

int and = ipInt & (255 <

ipString[i] = String.valueOf(and >>>pos);

}return String.join(".", ipString);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>