java - 在 Java 中如何存储 IP

标签 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];
}

编辑:Integer.valueOf 替换为 Integer.parseInt,感谢 Unihedron

关于java - 在 Java 中如何存储 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966329/

相关文章:

python - "Couldn' t 将字符串转换为 float ”在 python 中读取 .DBF 文件 - 处理错误的传感器数据

php - 为什么 Eloquent(在 Laravel 中)将我的 varchar uuid 主键转换为整数导致错误?

java - 使用 org.json.JSONObject 解析 JSON 中的转义字符;

php在终端执行时无法连接到数据库

php - 如何使用 php 在临时内存中而不是在我的主机中创建 zip 文件然后下载?

mysql - 基于其他表的 MS SQL 不同结果

c++ - 在具有不同签名的 std::function 之间进行转换(T* arg 到 void* arg)

java - Spring集成-入站 channel 适配器是多线程的吗?

java - 摩尔斯电码转换器

javascript 弹出窗口未获取托管值