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 ...
随机推荐
- 支持utf8的str_split函数
<?php header("Content-type: text/html; charset=utf-8"); /** * 按字节数对字符串进行分片 * @param $st ...
- 多项式求逆/分治FFT 学习笔记
一.多项式求逆 给定一个多项式 \(F(x)\),请求出一个多项式 \(G(x)\), 满足 \(F(x) * G(x) \equiv 1 ( \mathrm{mod\:} x^n )\).系数对 \ ...
- [提权]CVE-2018-8120漏洞复现
0x01 漏洞名称 Windows操作系统Win32k的内核提权漏洞 0x02 漏洞编号 CVE-2018-8120 0x03 漏洞描述 部分版本Windows系统win32k.sys组件的NtUse ...
- 内部类访问局部变量时,为什么需要加final关键字
是变量的作用域的问题,因为匿名内部类是出现在一个方法的内部的,如果它要访问这个方法的参数或者方法中定义的变量,则这些参数和变量必须被修饰为final.因为虽然匿名内部类在方法的内部,但实际编译的时候, ...
- chrome-添加JSON-handler插件
1.访问http://jsonhandle.sinaapp.com/下载 2.谷歌访问 chrome://extensions/ 然后找到你下载的JSON-handle_0.5.2.crx文件,直 ...
- cannot load from mysql.proc. the table is probably corrupted 解决办法
执行以下命令:mysql_upgrade -u root -p 密码 mysql5.5及5.5以上的版本开始,mysql数据库中proc表中的comment字段的列属性已经由char(64)改为tex ...
- jquery判断一个标签是否包含另外一个标签
jquery判断一个标签是否包含另外一个标签 一.总结 一句话总结: jquery的find方法配合length属性:if($("#video_md_9_1").find(&quo ...
- 解决跨操作系统平台JSON中文乱码问题
解决跨操作系统平台JSON中文乱码问题 LINUX统一使用utf-8编码,WINDOWS却不是. LINUX中间件,传输JSON给WINDOWS程序,会乱码. 解决办法: 对JSON字段是字符串类型的 ...
- matlab图像灰度调整——imadjust函数的使用
在MATLAB中,通过函数imadjust()进行图像灰度的调整,该函数调用格式如下: J=imadjust( I ) 对图像I进行灰度调整 J=imadjust( I,[low_in;high_i ...
- OpenJudge计算概论-自整除数
/*=================================================== 自整除数 总时间限制: 1000ms 内存限制: 65536kB 描述 对一个整数n,如果其 ...