Java编程实现遍历两个MAC地址之间所有MAC的方法
本文实例讲述了Java编程实现遍历两个MAC地址之间所有MAC的方法。分享给大家供大家参考,具体如下:
在对发放的设备进行后台管理时,很多时候会用到设备MAC这个字段,它可以标识唯一一个设备。然而在数据库批量的存储MAC地址时,如果使用解析文本逐行添加的方式,难免会显得操作复杂,而且事先还需生成MAC地址文本。事实上MAC地址是按照十六进制逐一递增的,所以只需要给出一个区间便有可能枚举出所有MAC地址。以下是笔者封装的一个通过两个MAC地址枚举区间内所有MAC的函数。
/**输出两个MAC区间内的所有MAC地址*/
publicstaticvoidcountBetweenMac(StringmacStart,StringmacEnd){
longstart=turnMacToLong(macStart);
longend=turnMacToLong(macEnd);
Stringprefix=macStart.substring(0,9);
Stringhex=null;
Stringsuffix=null;
StringBuffersb=null;
for(longi=start;i<end+1;i++){
hex=Long.toHexString(i);
suffix=hex.substring(hex.length()-6);
sb=newStringBuffer(suffix);
sb.insert(2,":");
sb.insert(5,":");
System.out.println(prefix+sb.toString());
}
}
/**将MAC转换成数字*/
publicstaticlongturnMacToLong(StringMAC){
Stringhex=MAC.replaceAll("\\:","");
longlongMac=Long.parseLong(hex,16);
returnlongMac;
}
另附计算两个MAC之间MAC中个数函数:
/**计算区间内MAC总数*/
publicstaticlongcountMac1(StringmacStart,StringmacEnd){
StringhexStart=macStart.replaceAll("\\:","");
StringhexEnd=macEnd.replaceAll("\\:","");
longstart=Long.parseLong(hexStart,16);
longend=Long.parseLong(hexEnd,16);
returnend-start+1;
}
/**计算区间内MAC总数*/
publicstaticlongcountMac(StringmacStart,StringmacEnd){
String[]start=macStart.split("\\:");
String[]end=macEnd.split("\\:");
intx,y,z;
inta,b,c;
x=Integer.parseInt(start[3],16);
y=Integer.parseInt(start[4],16);
z=Integer.parseInt(start[5],16);
a=Integer.parseInt(end[3],16);
b=Integer.parseInt(end[4],16);
c=Integer.parseInt(end[5],16);
return(a-x)*16*16*16+(b-y)*16*16+c-z+1;
}
希望本文所述对大家Java程序设计有所帮助。