如何将IP地址映射到八个字符的长字符串?

时间:2012-01-24 15:56:39

标签: c# .net algorithm hash hashtable

我有一个服务器IP地址列表,我的应用程序与之交互以收集实时数据。收集的数据被发送到另一个系统的插槽。这些槽由八个字符长度的字符串标识。我想以编程方式创建这个插槽。我想创建一个方法,将服务器的IP地址映射到八个字符串。例如。给定192.80.24.200它将返回SLOT0001我假设散列函数将是一个很好的解决方案,但我不确定它是如何实现的。

该应用程序是C#Winforms .Net Framework 4.0。服务器是基于Windows的服务器。

3 个答案:

答案 0 :(得分:5)

好吧,将IP地址转换为32位数字,然后将其转换为8位十六进制数字。

答案 1 :(得分:2)

IP地址长度为4个字节,可以直接写为八个十六进制字符:

void Main()
{
    var addr = IPAddress.Parse("192.80.24.200");
    var str = IPAddressToString(addr);
    Console.WriteLine(str);
}

public string IPAddressToString(IPAddress address)
{
    var result = new StringBuilder(8);
    foreach(var b in address.GetAddressBytes())
    {
        result.AppendFormat("{0:x2}", b);
    }
    return result.ToString();
}

答案 2 :(得分:1)

八个字符是HEX表示。

  • 十进制:192.80.24.200
  • HEX:C0.50.18.C8
  • 无点十六进制字符串:C05018C8

这是将IP打包成八个字节的更快速,更简单的方法