编程 VB IP地址段输出

来源:百度知道 编辑:UC知道 时间:2024/05/21 11:31:30
8个文本框text1....text8
IP开始地址段:text1.text2.text3.text4
IP结束地址段:text5.text6.text7.text8

比如填写的是
开始:1.10.1.1
结束:2.1.1.1

那么输出就是1.10.1.1...1.10.1.2....1.10.1.3.....2.1.1.1超多。
判断就不用了。只要思路请高手帮忙一下。我循环。循环到晕了。
二进制和255一样。如果2进制更惨-。-||。。255进制是[(第一个位数X255+1)X255+1]x255+1....痛苦。。。。越想越多。所以不想了。找高手点一下。

现在我已经分开8个文本框。不想整个连。二楼的试了。出错。我想用现在这种思路去做一下。所以请高手帮个忙。想想。

回答者: VB妮可 。代码无错误。我看了一下,很好。而且很干净。呵呵。。。回答者: kmlxk。也不错。呵呵。只是代码里边有几个地方还要改动。还有判断也要改。所以把这个给 VB妮可。也谢谢kmlxk。

Private Sub Command1_Click()
startIP = ip2num(Text1, Text2, Text3, Text4)
endIP = ip2num(Text5, Text6, Text7, Text8)
For i = startIP To endIP
Print num2ip(CStr(i))
Next
End Sub

Function ip2num$(ip1$, ip2$, ip3$, ip4$)
ip2num = Val(ip1) * 256 ^ 3 + Val(ip2) * 256 ^ 2 + Val(ip3) * 256 + Val(ip4)
End Function

Function num2ip$(num$)
Dim ip(3), tmp
tmp = CDec(num)
ip(0) = CStr(Fix(tmp / 256 ^ 3))
tmp = tmp - CDec(ip(0)) * 256 ^ 3
ip(1) = CStr(Fix(tmp / 256 ^ 2))
tmp = tmp - CDec(ip(1)) * 256 ^ 2
ip(2) = CStr(Fix(tmp / 256))
tmp = tmp - CDec(ip(2)) * 256
ip(3) = CStr(Fix(tmp))
num2ip = Join(ip, ".")
End Function

用 255 进制

或者2进制的分段呢.

255.255.255.255 = 11111111.1111111.1111111.11111111

只是个想法,下次再来看看别人的意见

'大概思路是这样的
'把点分IP转换为长整数
'IP+1
'转换为十六进制字符串
'点分
'
'不过Long在VB6中是有符