C#中十六进制转IPv4地址的实现逻辑咨询
C# 中十六进制字符串转IPv4地址的实现
需求说明
需要将8位十六进制字符串转换为标准IPv4地址,对应示例:
6F6F6F6F→111.111.111.111FFFFFFFF→255.255.255.255
实现逻辑
IPv4地址本质是4个字节组成的32位整数,转换核心是把8位十六进制字符串解析为对应字节数组,再通过IPAddress类构造出目标地址,步骤如下:
- 校验输入:确保十六进制字符串长度为8,且仅包含合法十六进制字符(0-9、A-F、a-f)
- 拆分转换:每两位十六进制字符对应一个字节,按顺序生成4字节数组
- 构造地址:用生成的字节数组实例化
IPAddress对象,得到标准IPv4地址
代码实现
using System; using System.Net; public static class HexToIpConverter { public static IPAddress ConvertHexStringToIpv4(string hexString) { // 验证输入长度合法性 if (hexString.Length != 8) throw new ArgumentException("十六进制字符串必须为8位长度", nameof(hexString)); byte[] ipBytes = new byte[4]; // 逐段将十六进制转为字节 for (int i = 0; i < 4; i++) { string segmentHex = hexString.Substring(i * 2, 2); if (!byte.TryParse(segmentHex, System.Globalization.NumberStyles.HexNumber, null, out ipBytes[i])) throw new FormatException("输入包含非法十六进制字符"); } return new IPAddress(ipBytes); } // 测试示例 public static void Main() { string hex1 = "6F6F6F6F"; IPAddress ip1 = ConvertHexStringToIpv4(hex1); Console.WriteLine($"{hex1} → {ip1}"); // 输出:6F6F6F6F → 111.111.111.111 string hex2 = "FFFFFFFF"; IPAddress ip2 = ConvertHexStringToIpv4(hex2); Console.WriteLine($"{hex2} → {ip2}"); // 输出:FFFFFFFF → 255.255.255.255 } }
补充说明
- 如果输入带
0x前缀,需先通过hexString = hexString.TrimStart('0', 'x')去除前缀再转换 IPAddress构造函数会自动按字节数组顺序解析为IPv4地址段,无需额外调整字节序- 代码包含基础异常处理,可根据业务场景调整错误捕获逻辑
内容的提问来源于stack exchange,提问作者satya
相关产品推荐
相关产品推荐

