MAC地址生成器(可带跳数)

MAC地址生成器(可带跳数)效率好 10 万个只需要 15 毫秒左右 支持跳数生成 可用该方法生成 34 进制 26 进制等数 跳数为 0 时为顺序生成 跳数为 1 时 则跳过一个再生成 如 frontMac 为 00 00 00 00 00 01 skipNum

大家好,我是讯享网,很高兴认识大家。

效率好,10万个只需要15毫秒左右,支持跳数生成

可用该方法生成34进制,26进制等数


讯享网

 / * 自行去掉日志打印会更快 * @param startMac 开始的mac * @param skipNum 跳数 * @param howMany 生成多少个 */ private static void generateMacs(String startMac,int skipNum,int howMany){ long startTime = System.currentTimeMillis(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(startMac).append("\n"); String newMac ; String oldMac = startMac; for(int i = 0; i< howMany; i++){ newMac = generateMacsAddress(oldMac,skipNum); stringBuilder.append(newMac).append("\n"); oldMac = newMac; } long usedTime = System.currentTimeMillis() - startTime; System.out.println(stringBuilder); System.out.println("用时 : "+usedTime + " ms"); }

讯享网

代码分开写时因为下面的方法其他地方也可以用到(例如每增加一个mac,就去读U盘的文件),分开写可以物尽其用

讯享网 / * mac生成器 * @param frontMac 前置mac,根据前置mac生成下一个mac地址 * @param skipNum 跳数,每跳几个mac生成,跳数为0时为顺序生成, * 跳数为1时,则跳过一个再生成,如frontMac为00:00:00:00:00:01 ,skipNum = 1,则生成的mac为00:00:00:00:00:03 */ private static String generateMacsAddress(String frontMac,int skipNum){ char[] arr = frontMac.toCharArray(); char[] letters = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int remainder = skipNum + 1; for(int m = arr.length-1; m>=0; m--){ if(arr[m] == ':') continue; int index = getArrIndex(arr[m],letters); index = index + remainder; if(index >= letters.length){ remainder = index / letters.length; index = index % letters.length; arr[m] = letters[index]; }else{ arr[m] = letters[index]; break; } } return String.valueOf(arr); }
 private static int getArrIndex(char ch,char[] letters){ int i = 0; for (char let:letters) { if(let == ch) return i; i++; } return 0; }

小讯
上一篇 2025-03-08 19:40
下一篇 2025-03-06 14:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/44627.html