ネットワーク プログラミングでは、IP アドレス関連の操作が含まれることが多く、IP アドレスの変換は処理が必要になることが多いタスクです。最新の高級プログラミング言語として、Go 言語には強力なネットワーク プログラミング ライブラリが組み込まれており、これには IP アドレス変換のための多くの関数とツールが含まれています。
この記事では、読者が Go 言語でのネットワーク プログラミングをより深く理解し、習得できるように、Go 言語で一般的に使用される IP アドレス変換方法を紹介します。
1. IP アドレスの表現
IP アドレスは、ネットワーク接続および通信に使用される識別子です。コンピュータ ネットワークにおいて、IP アドレスはネットワーク上の各コンピュータを識別するために使用される一意の識別子です。 TCP/IP プロトコルでは、IP アドレスは 32 ビットの 2 進数で構成されており、通常は特定の規則に従って 10 進数に変換されます。たとえば、「192.168.0.1」は 32 ビットの 2 進数として表されます。
Go 言語では、IP アドレスを表す一般的な方法が 2 つあります。
IPv4 アドレスは 32 ビットの 2 進数で構成されます。 . 、通常は 4 つの部分に分割され、各部分は 255 以下の 10 進数で表されます。例:「192.168.0.1」。
IPv6 アドレスは 128 の 2 進数で構成され、通常はコロン (:) で区切られた 16 個の 16 進数の 8 つのグループとして表されます。例: 「2001:0db8:85a3:0000:0000:8a2e:0370:7334」。
2. IP アドレス変換方法
Go 言語では、net パッケージと strconv パッケージが IP アドレス変換を実現するための豊富な関数とツールを提供します。次のコンテンツでは、一般的に使用される変換方法のいくつかを詳しく紹介します。
Go 言語では、net パッケージの ParseIP 関数を使用して、IPv4 および IPv6 アドレス文字列を net に変換できます。 IP タイプは次のとおりです:
package main import ( "fmt" "net" ) func main() { ipv4addr := net.ParseIP("192.168.0.1") ipv6addr := net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334") fmt.Println(ipv4addr.String()) fmt.Println(ipv6addr.String()) }
実行結果は次のとおりです:
192.168.0.1 2001:db8:85a3::8a2e:370:7334
Go 言語では、以下に示すように、net パッケージの IPv4 関数を使用して、uint32 型の値を IPv4 アドレスに変換できます。
package main import ( "fmt" "net" "encoding/binary" ) func main() { addr := uint32(3232235521) // 192.168.0.1 的十进制表示 b := make([]byte, 4) binary.BigEndian.PutUint32(b, addr) ipv4 := net.IPv4(b[0], b[1], b[2], b[3]) fmt.Println(ipv4.String()) }
実行結果は次のとおりです。 string から uint32 タイプの IPv4 アドレス
192.168.0.1
package main import ( "fmt" "net" ) func main() { ipv4 := net.ParseIP("192.168.0.1") addr := binary.BigEndian.Uint32(ipv4.To4()) fmt.Println(addr) }
文字列をネットに変換します。 IPNet タイプ
3232235521
package main import ( "fmt" "net" ) func main() { addr, network, _ := net.ParseCIDR("192.168.0.1/24") fmt.Println(addr) fmt.Println(network) }
以上がgolangのIPアドレス変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。