不知道你是否仍然需要这个,但为了Informational Science和那些正在寻找解决方案的人,我发布了这个。我希望它至少可以帮助寻找解决方案的人。如果不是OP ...许多其他堆栈溢出用户。
CIDRIP = "192.168.0.1/24" 'must be in CIDR Format as no error checking added
wscript.echo "IP Address Range " & CIDR2IP(CIDRIP, false) & " - " & CIDR2IP(CIDRIP, True)
Function CIDR2IP(ip, high)
highs = "11111111111111111111111111111111"
lows = "00000000000000000000000000000000"
byte0 = Dec2bin(Split(ip, ".")(0))
byte1 = Dec2bin(Split(ip, ".")(1))
byte2 = Dec2bin(Split(ip, ".")(2))
byte3 = Dec2bin(Split(Split(ip, ".")(3), "/")(0))
Mask = Split(Split(ip, ".")(3), "/")(1)
bytes = byte0 & byte1 & byte2 & byte3
rangelow = Left(bytes, Mask) & Right(lows, 32 - Mask)
rangehigh = Left(bytes, Mask) & Right(highs, 32 - Mask)
iplow = bin2ip(Left(bytes, Mask) & Right(lows, 32 - Mask))
iphigh = bin2ip(Left(bytes, Mask) & Right(highs, 32 - Mask))
If high Then
CIDR2IP = iphigh
Else
CIDR2IP = iplow
End If
End Function
功能,一个32位的二进制字符串转换成IP地址
'expecting input like 00000000000000000000000000000000
Function bin2ip(strbin)
ip0 = C2dec(Mid(strbin, 1, 8))
ip1 = C2dec(Mid(strbin, 9, 8))
ip2 = C2dec(Mid(strbin, 17, 8))
ip3 = C2dec(Mid(strbin, 25, 8))
'combines all of the bytes into a single string
bin2ip = ip0 & "." & ip1 & "." & ip2 & "." & ip3
End Function
功能可二进制数转换成十进制数转换为二进制
十进制
'expecting input like 00010101
Function C2dec(strbin)
length = Len(strbin)
dec = 0
For x = 1 To length
binval = 2^(length - x)
temp = Mid(strbin, x, 1)
If temp = "1" Then dec = dec + binval
Next
C2dec = dec
End Function
功能
'Expecting input 0 thru 255
Function Dec2bin(dec)
Const maxpower = 7
Const length = 8
bin = ""
x = cLng(dec)
For m = maxpower To 0 Step -1
If x And (2^m) Then
bin = bin + "1"
Else
bin = bin + "0"
End If
Next
Dec2bin = bin
End Function
新增奖金 - 对于任何知道MYSQL并在MYSQL中使用IP地址的人,他们会立即识别这些功能。
'expecting input like 10.120.44.1 and converts to 175647745
Function INET_NTOA(ip)
ip0 = Split(ip, ".")(0)
ip1 = Split(ip, ".")(1)
ip2 = Split(ip, ".")(2)
ip3 = Split(ip, ".")(3)
urlobfs = 0
urlobfs = ip0 * 256
urlobfs = urlobfs + ip1
urlobfs = urlobfs * 256
urlobfs = urlobfs + ip2
urlobfs = urlobfs * 256
urlobfs = urlobfs + ip3
INET_NTOA = urlobfs
End Function
'expecting input like 175647745 and converts to 10.120.44.1
'Bugs will occur for CLng ceiling numbers. +/- 2,147,483,647
Function INET_ATON(ip)
Dim ipa()
ReDim ipa(3)
n2ip = ip
For i = 3 To 1 Step -1
ipa(i) = n2ip Mod 256
n2ip = n2ip/256
Next
ipa(0) = CInt(n2ip)
INET_ATON = ipa(0) & "." & ipa(1) & "." & ipa(2) & "." & ipa(3)
End Function
为什么不下载便携式应用程序? – CustomX
好吧,下载并转移到其他电脑是不允许的。这将需要我可以重新键入其他系统上的代码。谢谢 – NuckinFutz
所以我发现这一点,它看起来像我需要的,但它在C#中,我需要它是一个.vbs。任何人都可以帮助我在.vbs中重做它吗? http://stackoverflow.com/questions/1470792/how-to-calculate-the-ip-range-when-the-ip-address-and-the-netmask-is-given?rq=1 谢谢您 – NuckinFutz