Zac*_*443 2 java mysql type-conversion
我正在将 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];
}
Run Code Online (Sandbox Code Playgroud)
编辑: Integer.valueOf 替换为 Integer.parseInt,感谢 Unihedron