Java子网掩码与网络标示相互转换
来源:互联网 发布:淘宝详情图怎么上传 编辑:程序博客网 时间:2024/06/05 21:08
子网掩码通常有以下2种格式的表示方法:
1. 通过与IP地址格式相同的点分十进制表示
如:255.0.0.0 或 255.255.255.128
2. 在IP地址后加上"/"符号以及1-32的数字,其中1-32的数字表示子网掩码中网络标识位的长度
如:192.168.1.1/24 的子网掩码也可以表示为 255.255.255.0
public String calcMaskByPrefixLength(int length) {//输出长度获得子网掩码
int mask = -1 << (32 - length);
int partsNum = 4;
int bitsOfPart = 8;
int maskParts[] = new int[partsNum];
int selector = 0x000000ff;
for (int i = 0; i < maskParts.length; i++) {
int pos = maskParts.length - 1 - i;
maskParts[pos] = (mask >> (i * bitsOfPart)) & selector;
}
String result = "";
result = result + maskParts[0];
for (int i = 1; i < maskParts.length; i++) {
result = result + "." + maskParts[i];
}
return result;
// return (maskParts[0] << 24) + (maskParts[1] << 16) + (maskParts[2] <<
// 8) + (maskParts[3]);
}
public int calcPrefixLengthByMack(String strip) {//输入子网掩码获得长度
StringBuffer sbf;
String str;
// String strip = "255.255.255.0"; // 子网掩码
int inetmask = 0, count = 0; // 子网掩码缩写代码
String[] ipList = strip.split("\\.");
for (int n = 0; n < ipList.length; n++) {
sbf = toBin(Integer.parseInt(ipList[n]));
str = sbf.reverse().toString();
Log.i("wqm", ipList[n] + "---" + str);
// 统计2进制字符串中1的个数
count = 0;
for (int i = 0; i < str.length(); i++) {
i = str.indexOf('1', i); // 查找 字符'1'出现的位置
if (i == -1) {
break;
}
count++; // 统计字符出现次数
}
inetmask += count;
}
return inetmask;
}
public StringBuffer toBin(int x) {
StringBuffer result = new StringBuffer();
result.append(x % 2);
x /= 2;
while (x > 0) {
result.append(x % 2);
x /= 2;
}
return result;
}
- Java子网掩码与网络标示相互转换
- Java关于数值类型的子网掩码和ip类型的子网掩码相互转换
- java实现子网掩码转换为网络标识位
- java实现子网掩码转换为网络标识位
- 子网掩码与网络划分
- Java与JSON相互转换
- java 标示符与关键字
- JAVA标示符与关键字
- JAVA的整型与字符串相互转换
- CMYK与RGB相互转换(java)
- Java中字符串与ASCII相互转换
- JSON与java对象的相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JSON与JAVA数据的相互转换
- xml与java对象的相互转换
- JAVA 整型 与字符串 String 相互转换
- UI_UIControl
- SEO企业文案思路:给的再多,不如懂我
- BaseAdapter使用
- yii2-如何控制没有登录的情况下,全部跳转到登录页面
- MongoDB分片集群_windows示例
- Java子网掩码与网络标示相互转换
- 拉勾网爬取的招聘数据解读--大数据分析师要掌握的工具与语言
- Actionbar太过复杂的时候
- Java开发中的23种设计模式详解(转)
- 关于angular分页的一小个案例
- PHP SplHeap 堆介绍
- android下的状态选择器
- java面试易错代码分析
- mysql配置