簡體   English   中英

找出給定的mac地址是否在范圍內

[英]Find out given mac address is in range or not

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

謝謝

要完全通用范圍(而不僅僅是回答此特定范圍),您可以創建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

由於0-9個字符是“小於”AZ字符,並且所有輸入長度相同,只需使用字符串比較:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM