Java編程實現(xiàn)遍歷兩個MAC地址之間所有MAC的方法
本文實例講述了Java編程實現(xiàn)遍歷兩個MAC地址之間所有MAC的方法。分享給大家供大家參考,具體如下:
在對發(fā)放的設(shè)備進行后臺管理時,很多時候會用到設(shè)備MAC這個字段,它可以標(biāo)識唯一一個設(shè)備。然而在數(shù)據(jù)庫批量的存儲MAC地址時,如果使用解析文本逐行添加的方式,難免會顯得操作復(fù)雜,而且事先還需生成MAC地址文本。事實上MAC地址是按照十六進制逐一遞增的,所以只需要給出一個區(qū)間便有可能枚舉出所有MAC地址。以下是筆者封裝的一個通過兩個MAC地址枚舉區(qū)間內(nèi)所有MAC的函數(shù)。
/** 輸出兩個MAC區(qū)間內(nèi)的所有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轉(zhuǎn)換成數(shù)字 */ public static long turnMacToLong(String MAC){ String hex = MAC.replaceAll("\\:", ""); long longMac = Long.parseLong(hex, 16); return longMac; }
另附計算兩個MAC之間MAC中個數(shù)函數(shù):
/** 計算區(qū)間內(nèi)MAC總數(shù) */ 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; } /** 計算區(qū)間內(nèi)MAC總數(shù) */ 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程序設(shè)計有所幫助。
相關(guān)文章
Java 中jasperReport實現(xiàn)動態(tài)列打印的實現(xiàn)代碼
這篇文章主要介紹了Java 中jasperReport實現(xiàn)動態(tài)列打印的實現(xiàn)代碼的相關(guān)資料,希望通過本文大家能掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09Java實現(xiàn)學(xué)生管理系統(tǒng)(控制臺版本)
這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)控制臺版本的學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06關(guān)于Java父類沒有無參構(gòu)造方法子類處理方法
父類無參構(gòu)造方法,子類不寫,其實會默認調(diào)用父類的無參構(gòu)造方法也就是用super(),編譯運行后,會打印出"子類會調(diào)用Father的第一個構(gòu)造方法,這篇文章給大家介紹關(guān)于Java父類沒有無參構(gòu)造方法子類處理方法,感興趣的朋友一起看看吧2024-01-01Springboot項目通過redis實現(xiàn)接口的冪等性
這篇文章主要為大家介紹了Springboot項目通過redis實現(xiàn)接口的冪等性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12