尝试嵌套 for 循环以生成 IPv4 地址
Attempting to nest for loops to generate IPv4 Addresses
我需要一些帮助,我正在尝试遍历 ip 范围内的所有 ip,但我遇到了一些问题
我用循环试过了
'pos_1: loop {
'pos_2: loop {
'pos_3: loop {
'pos_4: loop {
println!("{}.{}.{}.{}",new_ip[0], new_ip[1], new_ip[2], new_ip[3]);
if new_ip[3] == (first_ip[3]+ip_differences[3]) {break 'pos_4;}
new_ip[3] += 1;
}
if new_ip[2] == (first_ip[2]+ip_differences[2]) {break 'pos_3;}
new_ip[2] += 1;
}
if new_ip[1] == (first_ip[1]+ip_differences[1]) {break 'pos_2;}
new_ip[1] += 1;
}
if new_ip[0] == (first_ip[0]+ip_differences[0]) {break 'pos_1;}
new_ip[0] += 1;
}
还有for循环
for i in -1..ip_differences[0] {
for j in -1..ip_differences[1] {
for k in -1..ip_differences[2] {
for l in -1..ip_differences[3] {
println!("{}.{}.{}.{}", new_ip[0], new_ip[1], new_ip[2], new_ip[3]);
if new_ip[3] == (first_ip[3]+ip_differences[3]) {break;}
new_ip[3] += 1;
}
if new_ip[2] == (first_ip[2]+ip_differences[2]) {break;}
new_ip[2] += 1;
}
if new_ip[1] == (first_ip[1]+ip_differences[1]) {break;}
new_ip[1] += 1;
}
if new_ip[0] == (first_ip[0]+ip_differences[0]) {break;}
new_ip[0] += 1;
}
以上示例的输出:
93.124.176.{...}
93.124.176.248
93.124.176.249
93.124.176.250
93.124.176.251
93.124.176.252
93.124.176.253
93.124.176.254
93.124.176.255
93.124.177.255
93.124.178.255
93.124.179.255
93.124.180.255
93.124.181.255
93.124.182.255
93.124.183.255
还有 while 循环。
我正在使用 break 关键字,因为我不希望该值超过范围的上限。通常,我会假设 break 会中断当前循环,进入上层循环(重新启动内部循环)但感觉就像当我使用 break 时它只是完全中断循环并且再也不会使用。
(不间断new_ip每次递增可以得到0.0.1234)
出于好奇,我尝试在 java 中这样做,看看是我的想法不好,还是我对 rust 的理解...这是我对 rust 的理解。
因为这确实有效:
for (int i = -1; i < ipDifferences[0]; i++) {
for (int j = -1; j < ipDifferences[1]; j++) {
for (int k = -1; k < ipDifferences[2]; k++) {
for (int l = -1; l < ipDifferences[3]; l++) {
System.out.println(String.format("%s.%s.%s.%s", nIP[0], nIP[1], nIP[2], nIP[3]));
if (nIP[3]==(firstIP[3]+ipDifferences[3])) {
break;
}
nIP[3]++;
}
nIP[3]=firstIP[3];
if (nIP[2]==firstIP[2]+ipDifferences[2]) {
break;
}
nIP[2]++;
}
nIP[2]=firstIP[2];
if (nIP[1]==firstIP[1]+ipDifferences[1]) {
break;
}
nIP[1]++;
}
if (nIP[0]==firstIP[0]+ipDifferences[0]) {
break;
}
nIP[0]++;
}
java 改编的输出:
93.124.175.{...}
...
93.124.176.252
93.124.176.253
93.124.176.254
93.124.176.255
93.124.177.15
93.124.177.16
93.124.177.17
...
93.124.177.255
忘记设置new_ip[3]=first_ip[3];
我需要一些帮助,我正在尝试遍历 ip 范围内的所有 ip,但我遇到了一些问题
我用循环试过了
'pos_1: loop {
'pos_2: loop {
'pos_3: loop {
'pos_4: loop {
println!("{}.{}.{}.{}",new_ip[0], new_ip[1], new_ip[2], new_ip[3]);
if new_ip[3] == (first_ip[3]+ip_differences[3]) {break 'pos_4;}
new_ip[3] += 1;
}
if new_ip[2] == (first_ip[2]+ip_differences[2]) {break 'pos_3;}
new_ip[2] += 1;
}
if new_ip[1] == (first_ip[1]+ip_differences[1]) {break 'pos_2;}
new_ip[1] += 1;
}
if new_ip[0] == (first_ip[0]+ip_differences[0]) {break 'pos_1;}
new_ip[0] += 1;
}
还有for循环
for i in -1..ip_differences[0] {
for j in -1..ip_differences[1] {
for k in -1..ip_differences[2] {
for l in -1..ip_differences[3] {
println!("{}.{}.{}.{}", new_ip[0], new_ip[1], new_ip[2], new_ip[3]);
if new_ip[3] == (first_ip[3]+ip_differences[3]) {break;}
new_ip[3] += 1;
}
if new_ip[2] == (first_ip[2]+ip_differences[2]) {break;}
new_ip[2] += 1;
}
if new_ip[1] == (first_ip[1]+ip_differences[1]) {break;}
new_ip[1] += 1;
}
if new_ip[0] == (first_ip[0]+ip_differences[0]) {break;}
new_ip[0] += 1;
}
以上示例的输出:
93.124.176.{...}
93.124.176.248
93.124.176.249
93.124.176.250
93.124.176.251
93.124.176.252
93.124.176.253
93.124.176.254
93.124.176.255
93.124.177.255
93.124.178.255
93.124.179.255
93.124.180.255
93.124.181.255
93.124.182.255
93.124.183.255
还有 while 循环。 我正在使用 break 关键字,因为我不希望该值超过范围的上限。通常,我会假设 break 会中断当前循环,进入上层循环(重新启动内部循环)但感觉就像当我使用 break 时它只是完全中断循环并且再也不会使用。
(不间断new_ip每次递增可以得到0.0.1234)
出于好奇,我尝试在 java 中这样做,看看是我的想法不好,还是我对 rust 的理解...这是我对 rust 的理解。
因为这确实有效:
for (int i = -1; i < ipDifferences[0]; i++) {
for (int j = -1; j < ipDifferences[1]; j++) {
for (int k = -1; k < ipDifferences[2]; k++) {
for (int l = -1; l < ipDifferences[3]; l++) {
System.out.println(String.format("%s.%s.%s.%s", nIP[0], nIP[1], nIP[2], nIP[3]));
if (nIP[3]==(firstIP[3]+ipDifferences[3])) {
break;
}
nIP[3]++;
}
nIP[3]=firstIP[3];
if (nIP[2]==firstIP[2]+ipDifferences[2]) {
break;
}
nIP[2]++;
}
nIP[2]=firstIP[2];
if (nIP[1]==firstIP[1]+ipDifferences[1]) {
break;
}
nIP[1]++;
}
if (nIP[0]==firstIP[0]+ipDifferences[0]) {
break;
}
nIP[0]++;
}
java 改编的输出:
93.124.175.{...}
...
93.124.176.252
93.124.176.253
93.124.176.254
93.124.176.255
93.124.177.15
93.124.177.16
93.124.177.17
...
93.124.177.255
忘记设置new_ip[3]=first_ip[3];