|
Die als Netzwerk- und damit als Internet-Adressen sattsam bekannten IP-Nummern sind nichts anderes als Zahlen des Datentyps Long in einer anderen Darstellungsweise. In einer IP-Nummer werden die 4 Bytes eines Long-Wertes einzeln durch Punkte voneinander getrennt hintereinander angeführt.
Die folgende Funktion Long2IP wandelt einen Long-Wert in seine IP-Schreibweise um. Neben dem Long-Wert können Sie optional noch angeben, ob die einzelnen "Stellen" in der IP-Schreibweise jeweils dreistellig formatiert erscheinen sollen.
Die Funktion macht sich dabei zunutze, dass zwei verschiedene benutzerdefinierte Variablen mit der Anweisung LSet einander zugewiesen werden können, wenn die Anzahl der Bytes der Elemente jedes benutzerdefinierten Variablen-Typs identisch ist.
Private Type LongType
l As Long
End Type
Private Type IPType
Byte4 As Byte
Byte3 As Byte
Byte2 As Byte
Byte1 As Byte
End Type
Public Function Long2IP(ByVal LongValue As Long, _
Optional ThreeDigits As Boolean) As String
Dim nLong As LongType
Dim nIP As IPType
Dim nLong2IP As String
nLong.l = LongValue
LSet nIP = nLong
If ThreeDigits Then
Long2IP = "000.000.000.000"
With nIP
Mid$(Long2IP, 1, 3) = Format$(.Byte4, "000")
Mid$(Long2IP, 5, 3) = Format$(.Byte3, "000")
Mid$(Long2IP, 9, 3) = Format$(.Byte2, "000")
Mid$(Long2IP, 13, 3) = Format$(.Byte1, "000")
End With
Else
With nIP
Long2IP = .Byte4 & "." & .Byte3 & "." & .Byte2 & "." & .Byte1
End With
End If
End Function
Für die Umwandlung in umgekehrter Richtung sorgt die Funktion IP2Long. Dieser übergeben Sie einen IP-String (ob jeweils dreistellig formatiert oder nicht, ist dabei unerheblich), und Sie erhalten den entsprechenden Long-Wert zurück.
Public Function IP2Long(IP As String) As Long
Dim nLong As LongType
Dim nIP As IPType
Dim nParts() As String
nParts = Split(IP, ".")
With nIP
.Byte4 = CLng(nParts(0))
.Byte3 = CLng(nParts(1))
.Byte2 = CLng(nParts(2))
.Byte1 = CLng(nParts(3))
End With
LSet nLong = nIP
IP2Long = nLong.l
End Function
|