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 比较大小的更多相关文章

  1. 如何精确地测量java对象的大小-底层instrument API

    转载: 如何精确地测量java对象的大小-底层instrument API 关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象 ...

  2. java浮点型比较大小

    ======1   java浮点型比较大小 Float.parseFloat(String)和Float.valueOf(String).floatValue()的区别 Float.parseFloa ...

  3. 一步步优化JVM四:决定Java堆的大小以及内存占用

    到目前为止,还没有做明确的优化工作.只是做了初始化选择工作,比如说:JVM部署模型.JVM运行环境.收集哪些垃圾回收器的信息以及需要遵守垃圾回收原则.这一步将介绍如何评估应用需要的内存大小以及Java ...

  4. tips:Java基本数据类型大小比较

    tips:Java基本数据类型大小比较! Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. ------四个整数型------ (1)byte:b ...

  5. 如何准确计算Java对象的大小

    如何准确计算Java对象的大小 原创文章,转载请注明:博客园aprogramer 原文链接:如何准确计算Java对象的大小      有时,我们需要知道Java对象到底占用多少内存,有人通过连续调用两 ...

  6. java比较日期大小及日期与字符串的转换【SimpleDateFormat操作实例】

    java比较日期大小及日期与字符串的转换[SimpleDateFormat操作实例] package com.ywx.test; import java.text.ParseException; im ...

  7. JVM —— Java 对象占用空间大小计算

    零. 为什么要知道 Java 对象占用空间大小 缓存的实现: 在设计 JVM 内缓存时(不是借助 Memcached. Redis 等), 须要知道缓存的对象是否会超过 JVM 最大堆限制, 假设会超 ...

  8. Java mac 上编写Java代码

    看视频学JAVA,不想下载 notepad++之类的,虽然知道mac有内嵌的JAVA sdk ,但是还是不知道怎么编写,今天终于编写了我的第一个JAVA程序,还是以 Hello World 开始吧 1 ...

  9. Java Collection 集合类大小调整带来的性能消耗

    Java Collection类的某些详细实现因为底层数据存储基于数组,随着元素数量的添加,调整大小的代价非常大.随着Collection元素增长到某个上限,调整其大小可能出现性能问题. 当Colle ...

随机推荐

  1. IDEA中获取资源路径问题

    更正 以src开始,就能用相对路径了... shift+ctrl+alt+s 调出项目结构, 在Modules里,就是设置 Sources Resources Test的界面, 右面的路径就是相对路径 ...

  2. JavaScript中,返回上一个页面时,如何保证上一个页面的不刷新?

    history.back()和history.go(-1)都可以实现返回上一页并不刷新.History 对象包含用户(在浏览器窗口中)访问过的 URL. history.back() 等同于在浏览器点 ...

  3. Hadoop(1)---运行Hadoop自带的wordcount出错问题。

    在hadoop2.9.0版本中,对namenode.yarn做了ha,随后在某一台namenode节点上运行自带的wordcount程序出现偶发性的错误(有时成功,有时失败),错误信息如下: // : ...

  4. Linux下MySQL的操作(最全)

    注意:这里以mariadb为例 启动mysql服务 systemctl start mariadb 登录mysql mysql -u root -p SQL语言分类 - 数据定义语言:简称[DDL]( ...

  5. SSM框架的配置Spring+Springmvc +Mybatis

    ssm框架是由spring mvc +spring+mybatis组成 快速阅读 通过spring的配置文件spring.xml,在servlet中指定spring mvc的配置文件spring-mv ...

  6. 系统调优:如何解决系统报错too many open files

    一.检查系统版本是否手工升级 关于lsb_release -a和/etc/issue显示的发行版本号不同,原因只有一个:系统内核手动升级了 对于高并发高http连接的应用程序例如www或Java,会遇 ...

  7. docker.socks vul

    在容器上获取 RCE 1)列出所有容器 第一步是获取主机上所有容器的列表.为此,你需要执行以下http请求: GET /containers/json HTTP/1.1 Host: <docke ...

  8. Ubuntu 16.04安装完重启后黑屏,光标一直闪

    原文:https://blog.csdn.net/weixin_38533896/article/details/81023690 版权声明:本文为博主原创文章,转载请附上博文链接! 安装教程网址:h ...

  9. 为什么ArcGIS 10.3导出 Shapefile的字段名会被截断成3个汉字?解决方法如下

    为什么ArcGIS 10.3导出 Shapefile的字段名会被截断成3个汉字?低版本中不是至少可以存储4个汉字吗?原因这个问题仍然与编码类型有关.ArcGIS 10.2 以及更早的版本,ArcGIS ...

  10. Flutter移动电商实战 --(43)详细页_补充首页跳转到详细页

    首页轮播点击到详细页 修改我们轮播这里的代码:SwiperDiy这个类这里的代码 return InkWell( onTap: (){ Application.router.navigateTo(co ...