将IP地址转换为8位十六进制值

时间:2016-03-18 13:04:57

标签: c# ip hex

我有一个IP“192.168.232.189”,我需要使用c#将其转换为十六进制值“C0A8E8BD”。有人可以帮忙吗?

我看到了这个Converting IP Address to Hex,但我不完全确定如何实现c#

由于

6 个答案:

答案 0 :(得分:2)

每个IP地址相当于2个十六进制数字(或8个二进制数字)。 因此,您的问题归结为将192.168.232.189拆分为192,168,232,189。然后转换每个部分(简单的十进制 - 十六进制转换)并将其重新组合在一起。

答案 1 :(得分:1)

使用IPAddress类来解析地址(解析始终是最复杂的部分):

IPAddress address = IPAddress.Parse("192.168.232.189");

// Otherwise IPAddress would parse even IPv6 addresses
if (address.AddressFamily != AddressFamily.InterNetwork)
{
    throw new ArgumentException("address");
}

byte[] bytes = address.GetAddressBytes();
string strAddress = string.Format("{0:X2}{1:X2}{2:X2}{3:X2}", bytes[0], bytes[1], bytes[2], bytes[3]);

答案 2 :(得分:1)

如果IP地址表示为String,并且您希望结果为String,则可以

  1. '.'原始字符串拆分为IP地址部分
  2. 转换为<{1}}
  3. 将每个部分代表作为十六进制,至少有两位数
  4. Concat 所有部分
  5. 可能的实施( Linq )是

    int

答案 3 :(得分:1)

这是一个适合您的解决方案。首先将IP地址转换为数字,然后获取其HEX值。您可能希望将HEX反转为IP,可能在将来,因此此链接为Resource for IP conversions that I use.请参阅下面的输出。

public class Program
{
    static void Main(string[] args)
    {
        string ip = "192.168.232.189";
        string ipHexFormat = string.Format("{0:X}", ConvertIpToNumber(ip));

        Console.WriteLine(ipHexFormat);
    }

    public static long ConvertIpToNumber(string dottedIpAddress)
    {

        long num = 0;
        if (dottedIpAddress == "")
        {
            return 0;
        }
        else
        {
            int i = 0;
            string[] splitIpAddress = dottedIpAddress.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries);
            for (i = splitIpAddress.Length - 1; i >= 0; i--)
            {
                num += ((long.Parse(splitIpAddress[i]) % 256) * (long)Math.Pow(256, (3 - i)));
            }
            return num;
        }
    }
}

输出 enter image description here

答案 4 :(得分:0)

你去吧

string ip = "192.168.232.189";
string hex = string.Concat(ip.Split('.').Select(x => byte.Parse(x).ToString("X2")));
  • 使用.
  • 将{-1}}拆分为ip-string
  • 使用string.Split()
  • 解析每个字节
  • byte.Parse()转换为十六进制字符串byte
  • 将所有十六进制字符串与ToString("X2")
  • 合并在一起

答案 5 :(得分:0)

您可以使用System.Net.IPAddress

    IPAddress ip = IPAddress.Parse("192.168.232.189");
    Console.WriteLine(ByteArrayToString(ip.GetAddressBytes())); 

public static string ByteArrayToString(byte[] ba)
{
  string hex = BitConverter.ToString(ba);
  return hex.Replace("-","");
}

这是demo