首页 > 开发 > Java > 正文

Java编程实现遍历两个MAC地址之间所有MAC的方法

2024-07-13 09:56:10
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Java编程实现遍历两个MAC地址之间所有MAC的方法,涉及Java针对MAC的遍历获取与字符串转换相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Java编程实现遍历两个MAC地址之间所有MAC的方法。分享给大家供大家参考,具体如下:

在对发放的设备进行后台管理时,很多时候会用到设备MAC这个字段,它可以标识唯一一个设备。然而在数据库批量的存储MAC地址时,如果使用解析文本逐行添加的方式,难免会显得操作复杂,而且事先还需生成MAC地址文本。事实上MAC地址是按照十六进制逐一递增的,所以只需要给出一个区间便有可能枚举出所有MAC地址。以下是笔者封装的一个通过两个MAC地址枚举区间内所有MAC的函数。

 

 
  1. /** 输出两个MAC区间内的所有MAC地址 */ 
  2. public static void countBetweenMac(String macStart, String macEnd){  
  3. long start = turnMacToLong(macStart);  
  4. long end = turnMacToLong(macEnd);  
  5. String prefix = macStart.substring(0,9);  
  6. String hex = null;  
  7. String suffix = null;  
  8. StringBuffer sb = null;  
  9. for(long i=start; i< end +1; i++){  
  10. hex = Long.toHexString(i);  
  11. suffix = hex.substring(hex.length()-6);  
  12. sb = new StringBuffer(suffix);  
  13. sb.insert(2, ":");  
  14. sb.insert(5, ":");  
  15. System.out.println(prefix + sb.toString());  
  16. }  
  17. /** 将MAC转换成数字 */ 
  18. public static long turnMacToLong(String MAC){  
  19. String hex = MAC.replaceAll("//:""");  
  20. long longMac = Long.parseLong(hex, 16);  
  21. return longMac;  

另附计算两个MAC之间MAC中个数函数:

 

 
  1. /** 计算区间内MAC总数 */ 
  2. public static long countMac1(String macStart, String macEnd){  
  3. String hexStart = macStart.replaceAll("//:""");  
  4. String hexEnd = macEnd.replaceAll("//:""");  
  5. long start = Long.parseLong(hexStart, 16);  
  6. long end = Long.parseLong(hexEnd, 16);  
  7. return end-start+1;  
  8. /** 计算区间内MAC总数 */ 
  9. public static long countMac(String macStart, String macEnd){  
  10. String[] start = macStart.split("//:");  
  11. String[] end = macEnd.split("//:");  
  12. int x,y,z;  
  13. int a,b,c;  
  14. x = Integer.parseInt(start[3],16);  
  15. y = Integer.parseInt(start[4],16);  
  16. z = Integer.parseInt(start[5],16);  
  17. a = Integer.parseInt(end[3],16);  
  18. b = Integer.parseInt(end[4],16);  
  19. c = Integer.parseInt(end[5],16);  
  20. return (a-x)*16*16*16 + (b-y)*16*16 + c-z+1;  

希望本文所述对大家Java程序设计有所帮助。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表