首页 >后端开发 >C++ >如何在 C# 中将 IPv4 地址转换为整数,反之亦然?

如何在 C# 中将 IPv4 地址转换为整数,反之亦然?

Susan Sarandon
Susan Sarandon原创
2025-01-08 13:42:41710浏览

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

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn