ホームページ >バックエンド開発 >C++ >C# で IPv4 アドレスを整数に、またはその逆に効率的に変換するにはどうすればよいですか?

C# で IPv4 アドレスを整数に、またはその逆に効率的に変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-08 13:22:41670ブラウズ

How to Efficiently Convert IPv4 Addresses to Integers and Vice Versa in C#?

C# での IPv4 アドレスから整数への変換

質問:

C# で IPv4 アドレスを整数に効率的に変換するにはどうすればよいですか?さらに、逆変換を実行するメソッドを提供してください。

答え:

C# では、IPv4 アドレスは基本的に 32 ビットの符号なし整数として表されます。したがって、技術的には、明示的な変換は必要ありません。ただし、基になる整数値を取得するには、次の手順を使用できます:

  1. Address プロパティの取得: IPv4 アドレスに対応する IPAddress オブジェクトの Address プロパティにアクセスします。このプロパティは、アドレスを表す 32 ビットの符号なし整数である Int64 値を返します。
  2. バイト順の入れ替え (オプション): Address プロパティは、ネットワーク バイト順の整数値を返します。これは、コンピューター アーキテクチャのネイティブ バイト順と一致しない可能性があります。必要に応じて、IPAddress.NetworkToHostOrder メソッドを使用してバイトを交換し、ホストのバイト順序を取得できます。

たとえば、IPv4 アドレス「64.233.187.99」を整数に変換するには、次のコードを使用します:

<code class="language-csharp">long intValue = (long)(uint)IPAddress.NetworkToHostOrder(
                 (int)IPAddress.Parse("64.233.187.99").Address);</code>

同様に、整数を IPv4 アドレスに変換するには、次の手順を使用できます。

  1. IPAddress オブジェクトの作成: IPAddress コンストラクターと整数値を使用して IPAddress オブジェクトを作成します。
  2. ToString メソッドの使用: IPAddress オブジェクトの ToString メソッドを呼び出して、IPv4 アドレスの文字列表現を取得します。

たとえば、整数 1089059683 を IPv4 アドレスに変換するには、次のコードを使用します。

<code class="language-csharp">string addressString = IPAddress.Parse(1089059683.ToString()).ToString(); // 注意这里需要将整数转换为字符串再进行解析
```  或者更简洁的写法:

```csharp
string addressString = new IPAddress(1089059683).ToString(); // 直接使用IPAddress构造函数</code>

コードの 2 番目の部分では、明示的に文字列に変換せずに、パラメータとして整数を使用して IPAddress オブジェクトが直接構築されていることに注意してください。 どちらの方法でも目標を達成できますが、2 番目の方法の方がより簡潔で効率的です。

以上がC# で IPv4 アドレスを整数に、またはその逆に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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