JAVA MAC 比较大小
2个MAC
String mac_1="AAAAAAAAAAAA";
String mac_1="AAAAAAAAAAAB";
方法一:
int a = 0;
a = mac_1.compareTo(mac_2);
如果a>0 则 mac_1的16进制> mac_2的16进制 反之相反。
方法二:
字符转换成Long类型进行比较
Long mac_1_16 = Long.parseLong(mac_1, 16);
Long mac_2_16 = Long.parseLong(mac_1, 16);
mac_1_16和mac_2_16 直接比较即可。
下面是一个网络设备mac地址判断是不是在某一个范围之类的例子:
只展示接口功能,希望有些人可以用的着,就不详细说明了
public boolean checkEnbMacInRange(String macRangeStr, String enbMac) throws IOException {
boolean inRange = false;
List<String> licenseRangelist = getMacOuiSectionList(macRangeStr.toUpperCase());
enbMac.replace(":", "").toUpperCase();
String macOuiRange = licenseRangelist.get(0);
String macOuiEnb = enbMac.substring(0, 6);
logger.info("macOuiRange : " + macOuiRange);
logger.info("macOuiEnb : " + macOuiEnb);
Long enbMacSequenceLong = null;
if (macOuiRange.equals(macOuiEnb)) {
String enbMacSequenceStr = enbMac.substring(6, enbMac.length());
enbMacSequenceLong = Long.parseLong(enbMacSequenceStr, 16); for (int i = 1; i < licenseRangelist.size(); i++) {
String rangeStart = licenseRangelist.get(i).substring(0, 6);
String rangeEnd = licenseRangelist.get(i).substring(6, 12);
//方法 二
Long rangeStartLong16 = Long.parseLong(rangeStart, 16);
Long rangeSEndLong16 = Long.parseLong(rangeEnd, 16);
logger.info("rangeStart : " + rangeStartLong16);
logger.info("rangeSEnd : " + rangeSEndLong16);
logger.info("enbMac : " + enbMacSequenceLong);
if (rangeStartLong16 <= enbMacSequenceLong && enbMacSequenceLong <= rangeSEndLong16) {
logger.info("true====" );
inRange = true;
break;
}
//方法 一
int a = 0;
int b = 0;
a = enbMacSequenceStr.compareTo(rangeStart);
b = enbMacSequenceStr.compareTo(rangeEnd);
logger.info("a = " + a );
logger.info("b = " + b );
if (a >= 0 && b <= 0) {
logger.info("true====" );
inRange = true;
break;
}
}
}
return inRange;
} /**
* 拼装mac区间信息提供文件信息展示
*
* @param macRangeStr
* @return
* @throws IOException
*/
public String getMacSectionStr(String macRangeStr) throws IOException {
List<String> licenseRangelist = getMacOuiSectionList(macRangeStr);
StringBuilder macSection = new StringBuilder();
String macOuiRange = licenseRangelist.get(0).toUpperCase();
for (int i = 1; i < licenseRangelist.size(); i++) {
String rangeStart = licenseRangelist.get(i).substring(0, 6);
String rangeEnd = licenseRangelist.get(i).substring(6, 12);
macSection.append(macOuiRange).append(rangeStart);
macSection.append("-");
macSection.append(macOuiRange).append(rangeEnd);
macSection.append(",");
}
macSection.deleteCharAt(macSection.length() - 1);
return macSection.toString();
} /**
* 获取mac规则中的OUI,和mac区间范围信息
*
* @param macRangeStr
* @return
* @throws IOException
*/
public List<String> getMacOuiSectionList(String macRangeStr) throws IOException {
List<String> licenseRangelist = new ArrayList<String>();
if (CommMethod.isNotEmpty(macRangeStr)) {
String MAC_OUI = macRangeStr.substring(0, 6);
String MACListStr = macRangeStr.substring(9, macRangeStr.length());
macRangeStr = MAC_OUI + "," + MACListStr;
String[] macArray = macRangeStr.split(",");
licenseRangelist = Arrays.asList(macArray);
}
return licenseRangelist;
}
JAVA MAC 比较大小的更多相关文章
- 如何精确地测量java对象的大小-底层instrument API
转载: 如何精确地测量java对象的大小-底层instrument API 关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象 ...
- java浮点型比较大小
======1 java浮点型比较大小 Float.parseFloat(String)和Float.valueOf(String).floatValue()的区别 Float.parseFloa ...
- 一步步优化JVM四:决定Java堆的大小以及内存占用
到目前为止,还没有做明确的优化工作.只是做了初始化选择工作,比如说:JVM部署模型.JVM运行环境.收集哪些垃圾回收器的信息以及需要遵守垃圾回收原则.这一步将介绍如何评估应用需要的内存大小以及Java ...
- tips:Java基本数据类型大小比较
tips:Java基本数据类型大小比较! Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. ------四个整数型------ (1)byte:b ...
- 如何准确计算Java对象的大小
如何准确计算Java对象的大小 原创文章,转载请注明:博客园aprogramer 原文链接:如何准确计算Java对象的大小 有时,我们需要知道Java对象到底占用多少内存,有人通过连续调用两 ...
- java比较日期大小及日期与字符串的转换【SimpleDateFormat操作实例】
java比较日期大小及日期与字符串的转换[SimpleDateFormat操作实例] package com.ywx.test; import java.text.ParseException; im ...
- JVM —— Java 对象占用空间大小计算
零. 为什么要知道 Java 对象占用空间大小 缓存的实现: 在设计 JVM 内缓存时(不是借助 Memcached. Redis 等), 须要知道缓存的对象是否会超过 JVM 最大堆限制, 假设会超 ...
- Java mac 上编写Java代码
看视频学JAVA,不想下载 notepad++之类的,虽然知道mac有内嵌的JAVA sdk ,但是还是不知道怎么编写,今天终于编写了我的第一个JAVA程序,还是以 Hello World 开始吧 1 ...
- Java Collection 集合类大小调整带来的性能消耗
Java Collection类的某些详细实现因为底层数据存储基于数组,随着元素数量的添加,调整大小的代价非常大.随着Collection元素增长到某个上限,调整其大小可能出现性能问题. 当Colle ...
随机推荐
- Intellij IDEA常用操作
1.DEBUG过程中查看指定表达式的值(alt+左键) 2.DEBUG过程中查看指定表达式的值的另一个方法(ctrl+u) 这个快捷键会弹出一个对话框,直接按回车的话显示选中表达式的值,还能在输入框中 ...
- java 对txt文件读写(已经封装好)
读文件: public static String readTxt(String txtPath) { File file = new File(txtPath); if(file.isFile() ...
- 如何设置fvOptions【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-pre-processing/121763-how-set-fvoption ...
- java权限管理与用户角色权限设计
java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器 ...
- 米津玄師 - Lemon
Lemon 词:米津玄師 曲:米津玄師 夢(ゆめ)ならば どれほどよかったでしょう 未(いま)だにあなたのことを夢(ゆめ)にみる 忘(わす)れた物(もの)を 取(と)りに帰(かえ)るように 古(ふる) ...
- 20175234 2018-2019-2 《Java程序设计》第十周学习总结
目录 20175234 2018-2019-2 <Java程序设计>第十周学习总结 教材学习内容总结 12.1进程与线程 12.2 Java中的线程 12.3 Thread类与线程的创建 ...
- 图片上传利用request.getInputStream()获取文件流时遇到的问题
图片上传功能是我们web里面经常用到的,获得的方式也有很多种,这里我用的是request.getInputStream()获取文件流的方式.想要获取文件流有两种方式,附上代码 int length = ...
- Java 代码编写单例模式总结
手写一个单例模式是 Java 面试中常见的问题,很多时候我们更偏向于简单的写一个饿汉或饱汉模式,深入研究的甚少,这里列举三种实现方式,并对各自的优缺进行分析. 1. 饿汉式 public class ...
- [Java]某日期时间加上若干分钟得到新的日期时间
使用Java自带类库实现日期时间增减还是比自己人工拆分编写要牢靠,代码也简洁多了. 下面代码实现了在原有日期时间上加上一些分钟得到新的日期时间的功能,稍加改造还可以实现逆向运算. 代码: packag ...
- [Oracle] Oracle中和MySql的limit对应的方法
MySql很贴心,有个限制范围查询的limit函数,用起来也很方便,SQL不用嵌套.如下: select id,name,age,cdate as ctime from emp order by id ...