本文實例講述了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 (ax)*16*16*16 + (by)*16*16 + c-z+1; }希望本文所述對大家Java程序設計有所幫助。