[英]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
“是否在” range
: ip & mask == range & mask
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.