簡體   English   中英

IP屬於CIDR范圍

[英]IP falls in CIDR range

我有這樣的IP:12.12.12.12
我循環遍歷不同的IP范圍(12.12.12.0/24(示例))格式,並嘗試查看IP是否在范圍內。
我嘗試了各種方法,如inet_addr和比較,但我似乎無法得到它。
是否有捷徑可尋? 我正在使用Windows。

只測試是否:

(ip & netmask) == (range & netmask)

您可以從CIDR參數range/netbits確定網絡掩碼,如下所示:

uint32_t netmask = ~(~uint32_t(0) >> netbits);

獲取二進制表示並將與網絡掩碼不匹配的內容歸零。

澄清:假設您有IP abcd並希望將其與efgh/i匹配,那么您可以將IP轉換為一個無符號整數, uint32_t ip = a<<24 + b<<16 + c<<8 + d uint32_t range = e<<24 + f<<16 + g<<8 + h 現在您可以使用網絡掩碼: uint32_t mask = (~0u) << (32-i) 現在,您可以通過比較它們來檢查ip “是否在” rangeip & mask == range & mask

暫無
暫無

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

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