我想知道给定的mac地址是否在指定的mac地址范围内。
例如,我定义了开始和结束地址。如果您提供此范围内的任何mac地址,则API必须返回true,否则返回false。
例如:70-71-BC-90-0D-01在范围内,70-71-BC-90-0D-FF不在范围内。
Begin address: 70-71-BC-90-00-00
End address : 70-71-BC-90-0D-F7
由于
答案 0 :(得分:4)
要完全通用范围(而不只是回答此特定范围),您可以创建BigInteger
个实例,并进行比较。
要创建BigInteger
,我们会将MAC地址视为数字的十六进制表示。
以下实施不关心:
'-'
分隔符Java代码:
BigInteger min = new BigInteger(minAddr.replace("-",""), 16);
BigInteger max = new BigInteger(maxAddr.replace("-",""), 16);
BigInteger test = new BigInteger(testAddr.replace("-",""), 16);
boolean isInRange = min.compareTo(test) <= 0 && max.compareTo(test) >= 0;
如果您需要检查多个MAC地址,显然可以缓存min
和max
BigInteger
。
答案 1 :(得分:4)
由于0-9个字符“小于”A-Z字符,并且所有输入长度相同,只需使用字符串比较:
String beginAddress = "70-71-BC-90-00-00";
String endAddress = "70-71-BC-90-0D-F7";
if (macAddress.compareToIgnoreCase(beginAddress) >= 0
&& macAddress.compareToIgnoreCase(endAddress) <= 0)
// in range