C# 中 IPv4 地址与整数的相互转换
在处理 IPv4 地址时,经常需要将其转换为整数或反之。C# 提供了几种方法来执行这些转换。
要将 IPv4 地址转换为整数,可以使用 IPAddress
类的 Address
属性,该属性返回一个表示 IPv4 地址的 32 位无符号整数。但是,此属性以网络字节序返回地址,因此需要交换字节才能获得主机字节序。
例如,要将 IP 地址“64.233.187.99”转换为整数:
<code class="language-csharp">long address = (long)(uint)IPAddress.NetworkToHostOrder( (int)IPAddress.Parse("64.233.187.99").Address);</code>
要将整数转换回 IPv4 地址,可以使用 IPAddress
类的构造函数:
<code class="language-csharp">string ipAddress = new IPAddress((uint)IPAddress.HostToNetworkOrder( (int)address)).ToString();</code>
这是一个完整的示例程序,演示了这两种转换:
<code class="language-csharp">using System; using System.Net; public class Program { public static long ToInt(string addr) { return (long)(uint)IPAddress.NetworkToHostOrder( (int)IPAddress.Parse(addr).Address); } public static string ToAddr(long address) { return new IPAddress((uint)IPAddress.HostToNetworkOrder( (int)address)).ToString(); } public static void Main(string[] args) { Console.WriteLine(ToInt("64.233.187.99")); Console.WriteLine(ToAddr(1089059683)); } }</code>
以上是如何在 C# 中将 IPv4 地址转换为整数,反之亦然?的详细内容。更多信息请关注PHP中文网其他相关文章!