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 ...
随机推荐
- codeforces514E
Darth Vader and Tree CodeForces - 514E When Darth Vader gets bored, he sits down on the sofa, closes ...
- ROUND() 函数
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数. SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_n ...
- 页面性能优化:preload预加载静态资源
本文主要介绍preload的使用,以及与prefetch的区别.然后会聊聊浏览器的加载优先级. preload 提供了一种声明式的命令,让浏览器提前加载指定资源(加载后并不执行),在需要执行的时候再执 ...
- Docker Dockerfile 定制镜像
使用 Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...
- mysql 和mssql2016中的json字段相关操作
Mysql: mysql中有专门的Json字段,不是通用的varchar字段,可以保存key/value对,也可保存value集合. 可以增加.删除.修改Json中的某一字段,查询时可以为条件. 如果 ...
- 2019 DDCTF 部分writeup
网上的wp已经很多了,但wp普遍很简略.我尽量写的详细一点. 一.WEB 滴~ 拿到题目后首先右键查看源代码,发现图片是以base64传送的 而且看url发现里面应该是包含了文件名,并且用了某个编码. ...
- Java项目开发
项目开发整体构建: MVC+DAO设计模式 用面向对象的方式理解和使用数据库,一个数据库对应一个java项目 数据库--项目 表--类 字段--属性 表中的一条数据--类的一个对象 M:模型层 Jav ...
- oracle之case
使用oracle时,不免会用到判断后转换为要展示的值,这里常用case,如下: SELECT (case ) then 'yes' ) then 'no' else 'other' end) --no ...
- python 可执行
py2exe使用方法 py2exe作者:zzj 日期:2006-07-05字体大小: 小 中 大 一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.ex ...
- $().attr() 和 $().css的区别
使用jquery的.attr( )方法去给div隐藏,这样写的 $("#div_id").attr("display","none"),发现 ...