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程序设计有所帮助。