golangのIPアドレス変換

PHPz
リリース: 2023-05-12 21:52:06
オリジナル
1338 人が閲覧しました

ネットワーク プログラミングでは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!