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. codeforces514E

    Darth Vader and Tree CodeForces - 514E When Darth Vader gets bored, he sits down on the sofa, closes ...

  2. ROUND() 函数

    ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数. SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_n ...

  3. 页面性能优化:preload预加载静态资源

    本文主要介绍preload的使用,以及与prefetch的区别.然后会聊聊浏览器的加载优先级. preload 提供了一种声明式的命令,让浏览器提前加载指定资源(加载后并不执行),在需要执行的时候再执 ...

  4. Docker Dockerfile 定制镜像

    使用 Dockerfile 定制镜像  镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...

  5. mysql 和mssql2016中的json字段相关操作

    Mysql: mysql中有专门的Json字段,不是通用的varchar字段,可以保存key/value对,也可保存value集合. 可以增加.删除.修改Json中的某一字段,查询时可以为条件. 如果 ...

  6. 2019 DDCTF 部分writeup

    网上的wp已经很多了,但wp普遍很简略.我尽量写的详细一点. 一.WEB 滴~ 拿到题目后首先右键查看源代码,发现图片是以base64传送的 而且看url发现里面应该是包含了文件名,并且用了某个编码. ...

  7. Java项目开发

    项目开发整体构建: MVC+DAO设计模式 用面向对象的方式理解和使用数据库,一个数据库对应一个java项目 数据库--项目 表--类 字段--属性 表中的一条数据--类的一个对象 M:模型层 Jav ...

  8. oracle之case

    使用oracle时,不免会用到判断后转换为要展示的值,这里常用case,如下: SELECT (case ) then 'yes' ) then 'no' else 'other' end) --no ...

  9. python 可执行

    py2exe使用方法 py2exe作者:zzj 日期:2006-07-05字体大小: 小 中 大 一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.ex ...

  10. $().attr() 和 $().css的区别

    使用jquery的.attr( )方法去给div隐藏,这样写的 $("#div_id").attr("display","none"),发现 ...