Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将IP地址映射到八个字符长的字符串?_C#_.net_Algorithm_Hash_Hashtable - Fatal编程技术网

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

C# 如何将IP地址映射到八个字符长的字符串?,c#,.net,algorithm,hash,hashtable,C#,.net,Algorithm,Hash,Hashtable,我有一个服务器ip地址列表,我的应用程序与之交互以收集实时数据。收集的数据被发送到另一个系统中的插槽。这些插槽由八个字符长度的字符串标识。我想以编程方式创建这个插槽。我想创建一个方法,将服务器的ip地址映射到一个8个字符的字符串。给定192.80.24.200,它将返回SLOT001。我假设哈希函数是一个好的解决方案,但我不确定它是如何实现的 该应用程序是一个C#Winforms.Net Framework 4.0。服务器是基于windows的服务器 好的,将IP地址转换为32位数字,并将其转换

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


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

好的,将IP地址转换为32位数字,并将其转换为8个十六进制数字。

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

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();
}

八个字符是十六进制表示

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

这是一种将IP打包为8个字节的更快、更简单的方法

您想混淆IP还是将字符串反转为原始IP是可以接受的?我更喜欢一种可以混淆的解决方案,但是可以从字符串中找出IP的解决方案是可以接受的。您的解决方案需要支持IPv6地址吗?@ScottSmith Good问题。目前,我们只关注IPv4地址的定位。