iOS-检查遮罩ip是否有效(在ip范围内)

时间:2018-09-10 13:49:59

标签: ios swift ip mask

所以我试图找出如何根据IP来验证掩码ip(在范围内?)。 我似乎无法像在Java中那样迅速找到这些工具:

How can I detect if an IP is in a network?

1 个答案:

答案 0 :(得分:1)

let ip = "192.168.2.0"
let net = "192.168.1.0"
let pref = 24

func convertIpToInt(_ ipAddress: String) -> Int? {
   var result = 0.0
   let ipAddressArray = ipAddress.components(separatedBy: ".").compactMap { 
      Double($0) }
   guard ipAddressArray.count == 4 else { return nil }
   for (index, element) in ipAddressArray.enumerated() {
      result += element * pow(256, Double(3 - index))
   }

   return Int(result) > 0 ? Int(result) : nil
}

let ipInt = convertIpToInt(ip)
let netInt = convertIpToInt(net)
let brkstInt = netInt! + Int(pow(2, Double(32-pref))) - 1


print(ipInt! >= netInt! && ipInt! <= brkstInt) // false