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