我正在将一个 Java 程序连接到一个 MySQL 数据库,所以我需要 IP 来连接它。对 IP 进行硬编码显然不是一个好主意,所以我做了一个配置。我唯一的问题是我不确定将 IP 存储在变量中的内容。我环顾四周很多地方都说 int,但我看不出这是正确的,因为整数没有小数。我该怎么办?
最佳答案
编辑:Mattias F 的回答更适合您的情况。话虽如此,我将解释为什么您听说 IP 地址可以以整数形式存储。
IPv4 地址由 4 个八位字节或 4 个字节的数据组成。顺便说一句,这正是一个 32 位整数可以容纳的信息量。以下是两种方法:
public static int ipStringToInteger (final String ip)
{
int value = 0;
final String[] parts = ip.split ("\\.");
for (final String part : parts)
value = (value << 8) + Integer.parseInt (part);
return value;
}
public static String ipIntegerToString (int ip)
{
final String[] parts2 = new String[4];
for (int i = 0; i < 4; i++)
{
System.out.println ("Value : " + (ip & 0xff));
parts2[3 - i] = Integer.toString (ip & 0xff);
ip >>= 8;
}
return parts2[0] + '.' + parts2[1] + '.' + parts2[2] + '.' + parts2[3];
}
编辑:Integer.valueOf 替换为 Integer.parseInt,感谢 Unihedron
关于java - 在 Java 中如何存储 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966329/