c#中将IP地址转换成无符号整形数的方法与逆变换方法

本文介绍如何使用C#中的UInt32类型来存储和转换IPv4地址。提供了两个方法实现IP地址与UInt32之间的相互转换,适用于网络编程等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。

按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。
而c#中int32的数就是四个字节的,但是符号要占掉一位所以就不够了,但是无符号的 UInt32 就没有这样的问题。

所以理论上讲:UInt32是可以完整保存一个IP地址的。那下面的两个方法就是对IP与UInt32之间的互转换。

 

        public static string Int2IP(UInt32 ipCode) {
            
byte a = (byte)((ipCode & 0xFF000000>> 0x18);
            
byte b = (byte)((ipCode & 0x00FF0000>> 0xF);
            
byte c = (byte)((ipCode & 0x0000FF00>> 0x8);
            
byte d = (byte)(ipCode & 0x000000FF);
            
string ipStr = String.Format("{0}.{1}.{2}.{3}", a, b, c, d);
            
return ipStr;
        }

        
public static UInt32 IP2Int(string ipStr) {
            
string[] ip = ipStr.Split('.');
            
uint ipCode = 0xFFFFFF00 | byte.Parse(ip[3]);
            ipCode 
= ipCode & 0xFFFF00FF | (uint.Parse(ip[2]) << 0x8);
            ipCode 
= ipCode & 0xFF00FFFF | (uint.Parse(ip[1]) << 0xF);
            ipCode 
= ipCode & 0x00FFFFFF | (uint.Parse(ip[0]) << 0x18);
            
return ipCode;
        }

转载于:https://www.cnblogs.com/wwwzzg168/p/3569949.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值