package com.test;
public class TestDemo {
public static void main(String[] args) {
String ip = "123.234.124.200";
int mask = 24;
long start = ipToLong(ip); // 地址
long number = ipCount(mask); // ip地址个数
long lmask = maskToLong(mask); // 掩码
String startIp = (longToIP(start & lmask));
String endIp = (longToIP((start & lmask) + number));
System.out.println(startIp);
System.out.println(endIp);
}
// 计算出掩码指定的IP地址个数 如: 24
public static long ipCount(int mask) {
long number = 0;
for (int i = 0; i < 32-mask; i++) {
number += Math.pow(2, i);
}
return number;
}
// 分割IP地址
public static long[] splitIp(String ip) {
long[] ipArray = new long[4];
int position1 = ip.indexOf(".");
int length = ip.length();
if (length >= 7 && length < 16) {
if (position1 > 0) {
int position2 = ip.indexOf(".", position1 + 1);
if (position2 > 0) {
int position3 = ip.indexOf(".", position2 + 1);
if (position3 > 0 && position3 < length - 1) {
try {
ipArray[0] = Long.parseLong(ip.substring(0, position1));
ipArray[1] = Long.parseLong(ip.substring(position1 + 1, position2));
ipArray[2] = Long.parseLong(ip.substring(position2 + 1, position3));
ipArray[3] = Long.parseLong(ip.substring(position3 + 1));
} catch (NumberFormatException e) {
return null;
}
} else {
return null;
}
} else {
return null;
}
} else {
return null;
}
} else {
return null;
}
return ipArray;
}
// 将10.0.0.0形式的ip地址转换成10进制整数
public static long ipToLong(String str) {
long[] ip = splitIp(str);
if (ip != null) {
// ip=*256*256*256+ip2*256*256+ip3*256+ip4
return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
} else {
return 0;
}
}
// 将10.0.0.0形式的掩码地址转换成10进制整数
public static long maskToLong(int mask){
long longMask = 0;
for (int i = 31; i >= 32-mask; i--) {
longMask += Math.pow(2, i);
}
return longMask;
}
// 将10进制整数形式转换成127.0.0.1形式的IP地址
public static String longToIP(long longIp) {
StringBuffer sb = new StringBuffer("");
sb.append(String.valueOf(longIp >>> 24));// 右移24位
sb.append(".");
sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16)); // 将高8位置0,然后右移16位
sb.append(".");
sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));
sb.append(".");
sb.append(String.valueOf(longIp & 0x000000FF));
return sb.toString();
}
}
java ip地址段计算
5星 · 超过95%的资源 需积分: 50 22 浏览量
2012-02-15
08:43:34
上传
评论 3
收藏 1KB ZIP 举报
VCXIAOHEI
- 粉丝: 24
- 资源: 47
最新资源
- J211-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
- J210-VB一款SOT23封装P-Channel场效应MOS管
- content_1713924059748.zip
- J210-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
- Suno V3 AI音乐生成神器,助你秒变音乐大师,suno AI音乐使用教程
- 自适应极化滤波完成P/S波分离
- 0b40adff-950d-44cf-88e6-f4a64292b638.apk
- J209-VB一款SOT23封装P-Channel场效应MOS管
- OLED12864模块(IIC接口)中文说明书.pdf
- 22304010116工管余文贤.bak
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页