找出给定的mac地址是否在范围内

时间:2014-09-03 13:06:43

标签: java mac-address

我想知道给定的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

由于

2 个答案:

答案 0 :(得分:4)

要完全通用范围(而不只是回答此特定范围),您可以创建BigInteger个实例,并进行比较。

要创建BigInteger,我们会将MAC地址视为数字的十六进制表示。

以下实施不关心:

  • 十六进制数字的“大小写”(适用于低位,大写,混合)
  • 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地址,显然可以缓存minmax 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