欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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