Detaillierte Einführung in die IP-Adressübersetzung in Golang

PHPz
Freigeben: 2023-04-04 17:32:42
Original
2047 Leute haben es durchsucht

Golang ist eine objektorientierte Programmiersprache. Man kann sagen, dass ihr Aufstieg sehr schnell ist und eine hohe Praktikabilität aufweist. In Golang müssen wir normalerweise einige Vorgänge zur IP-Adresskonvertierung durchführen, was für Anfänger ein relativ schwieriges Problem sein kann. In diesem Artikel werden Sie ausführlich in die IP-Adresskonvertierung in Golang eingeführt, damit Sie dieses Wissen besser verstehen können.

Zuerst müssen wir die IP-Adresstypen in Golang verstehen. Es gibt zwei Arten von IP-Adressen in Golang. Eine davon ist die IPv4-Adresse, die aus einer 32-Bit-Ganzzahl ohne Vorzeichen besteht und normalerweise wie folgt ausgedrückt wird: a.b.c.d. Die andere ist die IPv6-Adresse, die aus 128-Bit-Ganzzahlen besteht und normalerweise wie folgt dargestellt wird: a:b:c:d:e:f:g:h. In Golang werden beide IP-Adresstypen als net.IP-Typen definiert.

Die Konvertierung einer IP-Adresse umfasst normalerweise zwei Teile: das String-Darstellungsformat der IP-Adresse und das binäre Darstellungsformat der IP-Adresse. Im Folgenden werden wir diese beiden Teile im Detail erläutern.

Das erste ist das String-Darstellungsformat der IP-Adresse. In Golang können wir eine IP-Adresse ganz einfach in eine Zeichenfolge umwandeln, zum Beispiel:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.IPv4(192, 168, 0, 1)
    fmt.Println(ip.String())
}
Nach dem Login kopieren

In diesem Beispiel erstellen wir eine IPv4-Adresse, indem wir die Funktion net.IPv4 aufrufen. Als nächstes haben wir die Methode ip.String() aufgerufen, um sie in einen String umzuwandeln und das Ergebnis an die Konsole auszugeben. Die Ausgabe des Programms ist: 192.168.0.1.

Wir können auch die Funktion net.ParseIP verwenden, um einen String in eine IP-Adresse umzuwandeln, zum Beispiel:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.ParseIP("192.168.0.1")
    fmt.Println(ip)
}
Nach dem Login kopieren

In diesem Beispiel rufen wir die Funktion net.ParseIP auf, um einen String in eine IP-Adresse umzuwandeln. Hierbei ist zu beachten, dass die net.ParseIP-Funktion einen Nullwert zurückgibt, wenn die Zeichenfolge nicht in eine gültige IP-Adresse konvertiert werden kann. Die Ausgabe des Programms ist: c0a80001.

In den obigen Ergebnissen ist „c0a80001“ die hexadezimale Darstellung der IPv4-Adresse 192.168.0.1. Da die IPv4-Adresse aus vier vorzeichenlosen 8-Bit-Ganzzahlen besteht, können wir diese nach der Konvertierung dieser vier Ganzzahlen in hexadezimale Zeichenfolgen zusammenfügen, um eine Zeichenfolge der Länge 8 zu erhalten. In Golang können Sie die IPv4-Adresse in ein Byte-Slice der Länge 4 konvertieren, indem Sie die Methode net.IP.To4() aufrufen und dann die Funktion hex.EncodeToString() aufrufen, um dieses Byte-Slice in eine hexadezimale String-Darstellung umzuwandeln. Zum Beispiel:

package main

import (
    "encoding/hex"
    "fmt"
    "net"
)

func main() {
    ip := net.ParseIP("192.168.0.1")
    if ip4 := ip.To4(); ip4 != nil {
        fmt.Println(hex.EncodeToString(ip4))
    }
}
Nach dem Login kopieren

In diesem Beispiel rufen wir die Funktion net.ParseIP auf, um eine Zeichenfolge in eine IP-Adresse umzuwandeln. Als nächstes haben wir die Methode ip.To4() aufgerufen, um die IP-Adresse in ein Byte-Slice der Länge 4 umzuwandeln, und das Ergebnis der Variablen ip4 zugewiesen. Wenn die IP-Adresse keine IPv4-Adresse ist, ist die IP4-Variable Null. Schließlich haben wir die Funktion hex.EncodeToString aufgerufen, um dieses Byte-Slice in eine hexadezimale String-Darstellung umzuwandeln. Die Ausgabe des Programms ist: c0a80001.

Als nächstes erklären wir, wie man eine IP-Adresse in ihre binäre Darstellung umwandelt. In Golang können Sie die IPv4-Adresse in ein Byte-Slice der Länge 4 konvertieren, indem Sie die Methode net.IP.To4() aufrufen, um deren binäre Darstellung zu erhalten. Zum Beispiel:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.ParseIP("192.168.0.1")
    if ip4 := ip.To4(); ip4 != nil {
        fmt.Println(ip4)
    }
}
Nach dem Login kopieren

In diesem Beispiel rufen wir die Funktion net.ParseIP auf, um eine Zeichenfolge in eine IP-Adresse umzuwandeln. Als nächstes haben wir die Methode ip.To4() aufgerufen, um die IP-Adresse in ein Byte-Slice der Länge 4 umzuwandeln, und das Ergebnis der Variablen ip4 zugewiesen. Wenn die IP-Adresse keine IPv4-Adresse ist, ist die IP4-Variable Null. Abschließend geben wir dieses Byte-Slice an die Konsole aus. Das Ausgabeergebnis des Programms ist: [192 168 0 1].

Der Konvertierungsvorgang der IPv6-Adresse ähnelt dem der IPv4-Adresse. In Golang können Sie eine IPv6-Adresse erstellen, indem Sie die Funktion „net.IPv6unspecified“ aufrufen, zum Beispiel:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.IPv6unspecified
    fmt.Println(ip)
}
Nach dem Login kopieren

In diesem Beispiel haben wir die Funktion „net.IPv6unspecified“ aufgerufen, um eine IPv6-Adresse zu erstellen. Diese Adresse besteht aus 16 Nullen und stellt eine nicht spezifizierte IPv6-Adresse dar. Abschließend geben wir diese Adresse auf der Konsole aus. Die Ausgabe des Programms ist:::.

Ähnlich können wir auch einen String in eine IPv6-Adresse umwandeln, indem wir die Funktion net.ParseIP aufrufen, zum Beispiel:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.ParseIP("2001:db8::1")
    fmt.Println(ip)
}
Nach dem Login kopieren

In diesem Beispiel rufen wir die Funktion net.ParseIP auf, um einen String in eine IPv6-Adresse umzuwandeln. Die Ausgabe des Programms ist: 2001:db8::1.

In Golang besteht das binäre Darstellungsformat der IPv6-Adresse ebenfalls aus Byte-Slices. Die Länge dieses Byte-Slices beträgt jedoch 16 und nicht 4. Wir können die IPv6-Adresse auch in ihre binäre Darstellung umwandeln, indem wir die Methode net.IP.To16() aufrufen, zum Beispiel:

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.ParseIP("2001:db8::1")
    fmt.Println(ip.To16())
}
Nach dem Login kopieren

In diesem Beispiel rufen wir die Funktion net.ParseIP auf, um eine Zeichenfolge in eine IPv6-Adresse umzuwandeln. Als nächstes haben wir die Methode ip.To16() aufgerufen, um die IP-Adresse in ein 16-Byte-Slice umzuwandeln und das Ergebnis an die Konsole auszugeben. Die Ausgabe des Programms ist: 20010db8000000000000000000000001.

Zusammenfassend lässt sich sagen, dass die IP-Adresskonvertierung ein relativ einfacher Vorgang ist und auch häufig in der Entwicklung verwendet wird. In Golang können wir eine IP-Adresse problemlos in ihr String-Darstellungsformat oder Binär-Darstellungsformat konvertieren, indem wir einfach die entsprechende Methode aufrufen. Natürlich müssen wir in der tatsächlichen Entwicklung auch einige andere Vorgänge an einer IP-Adresse ausführen, z. B. den Hostnamen, die Portnummer und andere Informationen abrufen. Dieses Wissen werden wir in den folgenden Artikeln ausführlich erläutern.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die IP-Adressübersetzung in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!