IP和长整型互换
*
*
*/
public class IPUtil {
public static void main(String[]args){
String ip="126.56.78.59";
long ipLong=ipToLong(ip);
System.out.println(ipLong);
System.out.println(longToIP(ipLong));
}
/**
* 将127.0.0.1形式的IP地址转换成十进制整数 这里没有进行任何错误处理
* 通过左移操作(<<)给每一段数字加权 第一段的权为2的24次方 第二段的权为2的16次方
* 第三段的权为2 的8次方 最后一段权为1
*/
public static long ipToLong(String ipadress){
long[]ip=new long[4];
//先找到IP地址字符串中 . 的位置
int position1=ipaddress.indexOf(".");
int position2=ipaddress.indexOf(".",position1+1);
int position3=ipaddress.indexOf(".",position2+1);
//将每个 . 之间的字符串转换为整型
ip[0]=Long.parseLong(ipadress, substring(0,position1));
ip[1] = Long.parseLong(ipaddress.substring(position1 + 1, position2));
ip[2] = Long.parseLong(ipaddress.substring(position2 + 1, position3));
ip[1] = Long.parseLong(ipaddress.substring(position3 + 1));
return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];
}
/**
* 将十进制整数形式转换为127.0.0.1形式的IP地址 将整数值进行右移操作(>>)右移24位,右移时高位补0,得到的数字即为第一段IP。
* 通过&操作符 将整数值的高位设为0,再右移16位 得到的数字即为第二段ip
* 通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
*/
public static String longToLong(long ipaddress){
StringBuffer sb=new StringBuffer("");
//直接右移24位
sb.append(String.valueOf((ipaddress>>>24)));
sb.append(".");
//将高8位置0 然后右移16位
sb.append(String.valueOf((ipaddress&0x00FFFFFF)>>>16));
sb.append(".");
//将高16 位置0 然后右移8位
sb.append(String.valueOf((ipaddress&0x0000FFFF)>>>8));
sb.append(".");
//将高24位置0
sb.append(String.valueOf((ipaddress & 0x000000FF)));
return sb.toString();
}
}
IP和长整型互换
最新推荐文章于 2023-06-30 10:29:56 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)