使用scala比较复杂对象

时间:2016-02-17 10:57:02

标签: scala

我有ip地址和ip范围。我已经将它们解析为这样的表示:

val patternIP(i1, i2, i3, i4)  
val patternRanges(i1_1, i1_2, i1_3, i1_4, i2_1, i2_2, i2_3, i2_4)

我想比较一下,ip是否在range中,例如: 6.207.95.225的范围为6.207.94.74-6.207.97.36 请问你能告诉我最实用的方法吗?

1 个答案:

答案 0 :(得分:2)

将IP转换为数字表示形式。 之后,您的任务就是检查一个数字是否在给定边界内的范围内。

类似的东西:

  case class Ipv4Address(value: Int) extends AnyVal

  def apply(a: Int, b: Int, c: Int, d: Int): Ipv4Address = {
    Ipv4Address((a & 0xff) << 24 | (b & 0xff) << 16 | (c  & 0xff) << 8 | (d & 0xff))
  }