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 添加解决方案。
我想将十六进制 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 添加解决方案。