不知道你是否仍然需要這個,但爲了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