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

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

Patricia Arquette
发布: 2025-01-08 13:22:41
原创
661 人浏览过

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 属性。此属性返回一个 Int64 值,表示地址的 32 位无符号整数。
  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>
登录后复制

请注意,第二段代码中,直接使用整数作为参数构造IPAddress对象,无需显式转换为字符串。 这两种方法都能达到目的,第二种方法更简洁高效。

以上是如何在 C# 中有效地将 IPv4 地址转换为整数,反之亦然?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板