Java编程实现遍历两个MAC地址之间所有MAC的方法
程序员文章站
2024-03-07 22:33:27
本文实例讲述了java编程实现遍历两个mac地址之间所有mac的方法。分享给大家供大家参考,具体如下:
在对发放的设备进行后台管理时,很多时候会用到设备mac这个字段,它...
本文实例讲述了java编程实现遍历两个mac地址之间所有mac的方法。分享给大家供大家参考,具体如下:
在对发放的设备进行后台管理时,很多时候会用到设备mac这个字段,它可以标识唯一一个设备。然而在数据库批量的存储mac地址时,如果使用解析文本逐行添加的方式,难免会显得操作复杂,而且事先还需生成mac地址文本。事实上mac地址是按照十六进制逐一递增的,所以只需要给出一个区间便有可能枚举出所有mac地址。以下是笔者封装的一个通过两个mac地址枚举区间内所有mac的函数。
/** 输出两个mac区间内的所有mac地址 */ public static void countbetweenmac(string macstart, string macend){ long start = turnmactolong(macstart); long end = turnmactolong(macend); string prefix = macstart.substring(0,9); string hex = null; string suffix = null; stringbuffer sb = null; for(long i=start; i< end +1; i++){ hex = long.tohexstring(i); suffix = hex.substring(hex.length()-6); sb = new stringbuffer(suffix); sb.insert(2, ":"); sb.insert(5, ":"); system.out.println(prefix + sb.tostring()); } } /** 将mac转换成数字 */ public static long turnmactolong(string mac){ string hex = mac.replaceall("\\:", ""); long longmac = long.parselong(hex, 16); return longmac; }
另附计算两个mac之间mac中个数函数:
/** 计算区间内mac总数 */ public static long countmac1(string macstart, string macend){ string hexstart = macstart.replaceall("\\:", ""); string hexend = macend.replaceall("\\:", ""); long start = long.parselong(hexstart, 16); long end = long.parselong(hexend, 16); return end-start+1; } /** 计算区间内mac总数 */ public static long countmac(string macstart, string macend){ string[] start = macstart.split("\\:"); string[] end = macend.split("\\:"); int x,y,z; int a,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程序设计有所帮助。