ホームページ  >  記事  >  バックエンド開発  >  golangのIPアドレス変換

golangのIPアドレス変換

PHPz
PHPzオリジナル
2023-05-12 21:52:061338ブラウズ

ネットワーク プログラミングでは、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 つあります。

  1. IPv4

IPv4 アドレスは 32 ビットの 2 進数で構成されます。 . 、通常は 4 つの部分に分割され、各部分は 255 以下の 10 進数で表されます。例:「192.168.0.1」。

  1. IPv6

IPv6 アドレスは 128 の 2 進数で構成され、通常はコロン (:) で区切られた 16 個の 16 進数の 8 つのグループとして表されます。例: 「2001:0db8:85a3:0000:0000:8a2e:0370:7334」。

2. IP アドレス変換方法

Go 言語では、net パッケージと strconv パッケージが IP アドレス変換を実現するための豊富な関数とツールを提供します。次のコンテンツでは、一般的に使用される変換方法のいくつかを詳しく紹介します。

  1. 文字列を 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
  1. uint32 タイプを IPv4 アドレスに変換します

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 アドレス

  1. Go 言語では、net パッケージの ParseIP 関数を使用して、IPv4 および IPv6 アドレス文字列を net.IP タイプの値に変換できます。 .IPv4Mask 関数 次のように、IPv4 アドレスの文字列を uint32 型の値に変換します。
  2. 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 タイプ

  1. Go 言語では、次のように net パッケージで ParseCIDR 関数を使用して、IP アドレスとサブネット マスクの文字列表現を net.IPNet タイプの値に変換できます。 :
  2. 3232235521
実行結果は次のとおりです:

package main
 
import (
    "fmt"
    "net"
)
 
func main() {
    addr, network, _ := net.ParseCIDR("192.168.0.1/24")
 
    fmt.Println(addr)
    fmt.Println(network)
}

3. 概要

この記事では、Go 言語で一般的に使用される IP アドレス変換方法を、具体的な方法で紹介します。コード例。これらの変換方法をマスターすることで、さまざまなネットワーク プログラミングにおける IP アドレスの問題をより柔軟に処理できるようになり、プログラミングの効率とコードの品質が向上します。

以上がgolangのIPアドレス変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。