c# 是否有更简单的hex2ip解决方案

c# Is there a simpler solution for hex2ip

我想将十六进制 C0A8B825 ipV4 转换为可读的 ip 地址 192.168.184.37。我正在寻找更好的解决方案。

我目前的解决方案:

var ipAddress = GetIpAddress("C0A8B825"); //192.168.184.37

public static string GetIpAddress(string hex)
{
    var ipPart1 = int.Parse(hex.Substring(0, 2), NumberStyles.HexNumber);
    var ipPart2 = int.Parse(hex.Substring(2, 2), NumberStyles.HexNumber);
    var ipPart3 = int.Parse(hex.Substring(4, 2), NumberStyles.HexNumber);
    var ipPart4 = int.Parse(hex.Substring(6, 2), NumberStyles.HexNumber);
    return $"{ipPart1}.{ipPart2}.{ipPart3}.{ipPart4}";
}

如果您只处理 IPv4,您可以使用:

// This will convert to a 32 bit integer representation of the ip
int ip = Convert.ToInt32("C0A8B825", 16);
// IPAddress CTOR needs BigEndian / "Network Byte Order"
if( BitConverter.IsLittleEndian) ip = IPAddress.HostToNetworkOrder(ip); 
var result = new IPAddress(ip).ToString(); // Will autoformat into the desired string.

结果内容:

192.168.184.37

稍后我会看看是否可以为 IPv4 和 IPv6 添加解决方案。