Hibernate Entity中IP地址的最佳类型?

Mic*_*hel 4 entity hibernate ip-address

使用Hibernate在数据库中存储IP地址的最佳类型是什么?

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

 @Column(name = "range_from",  nullable = false)
 public Byte[] getRangeFrom() {
  return rangeFrom;
 }
 public void setRangeFrom(Byte[] rangeFrom) {
  this.rangeFrom = rangeFrom;
 }
Run Code Online (Sandbox Code Playgroud)

小智 7

我将它存储在一个很长,非常快的查找中.您可以使用以下功能进行转换.

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;
}
Run Code Online (Sandbox Code Playgroud)

还有这个

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;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 您可以使用位移操作代替"(numericIP/16777216)%256":"numericIp << 24".这将更清楚地传达意图,如果您正确地得到2 ^ 24,那么阅读代码的人将不会被诱惑检查 (2认同)