首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在java中生成两个IP地址之间的所有IP地址

在java中生成两个IP地址之间的所有IP地址
EN

Stack Overflow用户
提问于 2013-10-31 10:47:12
回答 2查看 1.8K关注 0票数 0

我正在尝试获取两个地址之间的所有IP地址(“168.200.197.3”和"238.199.200.78")。我首先将字符串拆分成整数。然后我尝试打印出这两者之间的所有地址。但输出仅显示地址的每个部分都在递增,如168 169 170......我希望增加整个地址(168.200.197.3,168.200.197.4,168.200.197.5....etc)。请帮帮忙!

代码语言:javascript
运行
复制
public class IpAddress {


 public static void main(String[] args) {
    int [] ip1 = new int[4];
    int [] ip2 = new int[4];

    String [] parts1 = "168.200.197.3".split("\\.");
    String [] parts2 = "238.199.200.78".split("\\.");

    for (int i = 0; i <4; i++){
        ip1[i] = Integer.parseInt(parts1[i]);   
              for (int j = 0; j<4; j ++){
                    ip2[j] = Integer.parseInt(parts2[j]);
                           for (int k = ip1[i]; k<ip2[j]; k++){
                                  System.out.println(k);
                                        }
                                 }  
                        }
      }
}
EN

回答 2

Stack Overflow用户

发布于 2013-10-31 11:06:41

a.b.c.d这样的IPv4地址可以用无符号整数a*256^3+b*256^2+c*256+d表示。现在,您可以将两个IP地址转换为无符号整数,然后得到一个整数范围,迭代该范围,并将每个无符号整数转换回IPv4文字。

票数 4
EN

Stack Overflow用户

发布于 2013-10-31 11:05:22

如果是我,我会使用int值来表示IP地址,并编写一个函数将int转换为IP的字符串表示形式:

代码语言:javascript
运行
复制
private static final String getIPFromInt(final long ipaslong) {
    return String.format("%d.%d.%d.%d",
                (ipaslong >>> 24) & 0xff,
                (ipaslong >>> 16) & 0xff,
                (ipaslong >>>  8) & 0xff,
                (ipaslong       ) & 0xff);
}

然后,我将通过将起点和终点转换为整数表示来计算起点和终点(与getIPFromLong(...)相反的问题)方法,我将把它留给您作为练习),最后我将编写一个简单的循环:

代码语言:javascript
运行
复制
final long from = getLongFromIP(ip1);
final long to = getLongFromIP(ip2);

for (long i = from; i <= to, i++) {
    System.out.println(getIPFromLong(i);
}

编辑:将循环参数i更改为long,并将其他方法更改为接受long而不是int,以避免整数符号位的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19697621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档