Maison  >  Article  >  développement back-end  >  Introduction détaillée à la traduction d'adresses IP dans Golang

Introduction détaillée à la traduction d'adresses IP dans Golang

PHPz
PHPzoriginal
2023-04-04 17:28:202021parcourir

Golang est un langage de programmation orienté objet. On peut dire que son essor est très rapide et très pratique. Dans Golang, nous devons généralement effectuer certaines opérations de conversion d'adresse IP, ce qui peut être un problème relativement difficile pour les débutants. Cet article vous présentera en détail la conversion d'adresse IP dans Golang, afin que vous puissiez mieux comprendre ces connaissances.

Tout d'abord, nous devons comprendre les types d'adresses IP dans Golang. Il existe deux types d'adresses IP dans Golang. L'une est l'adresse IPv4, qui est composée d'un entier non signé de 32 bits et est généralement exprimée comme ceci : a.b.c.d. L'autre est l'adresse IPv6, composée d'entiers de 128 bits et généralement représentée comme ceci : a:b:c:d:e:f:g:h. Dans Golang, les deux types d'adresses IP sont définis comme des types net.IP.

La conversion d'une adresse IP comprend généralement deux parties : le format de représentation sous forme de chaîne de l'adresse IP et le format de représentation binaire de l'adresse IP. Ci-dessous, nous expliquerons ces deux parties en détail.

Le premier est le format de représentation sous forme de chaîne de l'adresse IP. Dans Golang, on peut facilement convertir une adresse IP en chaîne, par exemple :

package main

import (
    "fmt"
    "net"
)

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

Dans cet exemple, on crée une adresse IPv4 en appelant la fonction net.IPv4. Ensuite, nous avons appelé la méthode ip.String() pour la convertir en chaîne et afficher le résultat sur la console. La sortie du programme est : 192.168.0.1.

Nous pouvons également utiliser la fonction net.ParseIP pour convertir une chaîne en adresse IP, par exemple :

package main

import (
    "fmt"
    "net"
)

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

Dans cet exemple, nous appelons la fonction net.ParseIP pour convertir une chaîne en adresse IP. Il convient de noter ici que si la chaîne ne peut pas être convertie en une adresse IP valide, la fonction net.ParseIP renverra une valeur nulle. La sortie du programme est : c0a80001.

Dans les résultats ci-dessus, "c0a80001" est la représentation hexadécimale de l'adresse IPv4 192.168.0.1. Étant donné que l'adresse IPv4 est composée de quatre entiers non signés de 8 bits, après avoir converti ces quatre entiers en chaînes hexadécimales, nous pouvons les assembler pour obtenir une chaîne de longueur 8. Dans Golang, vous pouvez convertir l'adresse IPv4 en une tranche d'octets de longueur 4 en appelant la méthode net.IP.To4(), puis appeler la fonction hex.EncodeToString() pour convertir cette tranche d'octets en une représentation de chaîne hexadécimale. Par exemple :

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))
    }
}

Dans cet exemple, nous appelons la fonction net.ParseIP pour convertir une chaîne en adresse IP. Ensuite, nous avons appelé la méthode ip.To4() pour convertir l'adresse IP en une tranche d'octets de longueur 4 et avons attribué le résultat à la variable ip4. Si l'adresse IP n'est pas une adresse IPv4, la variable ip4 sera nulle. Enfin, nous avons appelé la fonction hex.EncodeToString pour convertir cette tranche d'octets en une représentation sous forme de chaîne hexadécimale. La sortie du programme est : c0a80001.

Ensuite, nous expliquerons comment convertir une adresse IP en sa représentation binaire. Dans Golang, vous pouvez convertir l'adresse IPv4 en une tranche d'octets de longueur 4 en appelant la méthode net.IP.To4() pour obtenir sa représentation binaire. Par exemple :

package main

import (
    "fmt"
    "net"
)

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

Dans cet exemple, nous appelons la fonction net.ParseIP pour convertir une chaîne en adresse IP. Ensuite, nous avons appelé la méthode ip.To4() pour convertir l'adresse IP en une tranche d'octets de longueur 4 et avons attribué le résultat à la variable ip4. Si l'adresse IP n'est pas une adresse IPv4, la variable ip4 sera nulle. Enfin, nous sortons cette tranche d'octets sur la console. Le résultat de sortie du programme est : [192 168 0 1].

L'opération de conversion de l'adresse IPv6 est similaire à l'adresse IPv4. Dans Golang, vous pouvez créer une adresse IPv6 en appelant la fonction net.IPv6unspecified, par exemple :

package main

import (
    "fmt"
    "net"
)

func main() {
    ip := net.IPv6unspecified
    fmt.Println(ip)
}

Dans cet exemple, nous avons appelé la fonction net.IPv6unspecified pour créer une adresse IPv6. Cette adresse est composée de 16 zéros et représente une adresse IPv6 non spécifiée. Enfin, nous affichons cette adresse sur la console. Le résultat du programme est :::.

De même, nous pouvons également convertir une chaîne en adresse IPv6 en appelant la fonction net.ParseIP, par exemple :

package main

import (
    "fmt"
    "net"
)

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

Dans cet exemple, nous appelons la fonction net.ParseIP pour convertir une chaîne en adresse IPv6. Le résultat de sortie du programme est : 2001:db8::1.

Dans Golang, le format de représentation binaire de l'adresse IPv6 est également composé de tranches d'octets. Cependant, la longueur de cette tranche d'octets est de 16 et non de 4. Nous pouvons également convertir l'adresse IPv6 en sa représentation binaire en appelant la méthode net.IP.To16(), par exemple :

package main

import (
    "fmt"
    "net"
)

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

Dans cet exemple, nous appelons la fonction net.ParseIP pour convertir une chaîne en adresse IPv6. Ensuite, nous avons appelé la méthode ip.To16() pour convertir l'adresse IP en une tranche de 16 octets et afficher le résultat sur la console. La sortie du programme est : 20010db8000000000000000000000001.

Pour résumer, la conversion d'adresse IP est une opération relativement basique, et c'est aussi une opération souvent utilisée en développement. Dans Golang, nous pouvons facilement convertir une adresse IP en son format de représentation sous forme de chaîne ou en format de représentation binaire, il suffit d'appeler la méthode correspondante. Bien entendu, dans le développement réel, nous devons également effectuer d'autres opérations sur une adresse IP, telles que l'obtention du nom d'hôte, du numéro de port et d'autres informations. Nous expliquerons ces connaissances en détail dans les articles suivants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn