代码之家  ›  专栏  ›  技术社区  ›  Michel

Hibernate实体中IP地址的最佳类型?

  •  4
  • Michel  · 技术社区  · 14 年前

    我认为Byte[]或String,但是有没有更好的方法,或者你用什么?

     @Column(name = "range_from",  nullable = false)
     public Byte[] getRangeFrom() {
      return rangeFrom;
     }
     public void setRangeFrom(Byte[] rangeFrom) {
      this.rangeFrom = rangeFrom;
     }
    
    2 回复  |  直到 14 年前
        1
  •  7
  •   Richard    12 年前

    我把它放在一个盒子里 ,查找速度非常快。可以使用以下函数进行转换。

    public static string GetStandardIP(long numericIP)
    {
        string w = Convert.ToString(Convert.ToInt64(numericIP / 16777216) % 256);
        string x = Convert.ToString(Convert.ToInt64(numericIP / 65536) % 256);
        string y = Convert.ToString(Convert.ToInt64(numericIP / 256) % 256);
        string z = Convert.ToString(Convert.ToInt64(numericIP) % 256);
    
        return w + "." + x + "." + y + "." + z;
    }
    

    这个呢

    public static long GetNumericIP(string standardIP)
    {
        if (standardIP != null && standardIP != string.Empty)
        {
            string[] ipParts = standardIP.Split('.');
            long numericIP = 16777216 * Convert.ToInt64(ipParts[0]) + 65536 * Convert.ToInt64(ipParts[1]) + 256 * Convert.ToInt32(ipParts[2]) + Convert.ToInt32(ipParts[3]);
    
            return numericIP;
        }
        return 0;
    }
    

    您可能希望通过检查参数来改进它们。

        2
  •  2
  •   Ross    14 年前

    我不知道有什么更好的方法可以通过Hibernate存储它们。

    看到了吗 https://forum.hibernate.org/viewtopic.php?f=1&t=996818&start=0

    编辑: 或者你也可以在Pierre 303的例子中使用long。最后,这实际上取决于你的应用程序,以及哪种类型对你来说最容易处理。