2012-01-24 60 views
0

我有一個服務器IP地址列表,我的應用程序與之交互以收集實時數據。收集的數據被髮送到另一個系統的插槽。這些插槽由八個字符長度字符串標識。我想以編程方式創建此插槽。我想創建一個將服務器的IP地址映射到八個字符的字符串的方法。例如。給定192.80.24.200它將返回SLOT0001我假設散列函數將是一個很好的解決方案,但我不知道它是如何實現的。如何將IP地址映射到八字符長的字符串?

該應用程序是一個C#Winforms .Net Framework 4.0。而服務器是基於Windows的服務器。

+0

你想混淆IP還是將字符串反轉爲原始IP是可以接受的? – Yahia

+0

我更喜歡一種會混淆的解決方案,但是可以允許從字符串中計算IP的解決方案是可以接受的。 – CleanCoder

+1

您的解決方案是否需要支持IPv6地址? –

回答

2

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

無論如何,IPv4地址是。 –

5

那麼,將IP地址轉換爲32位數字,並將其轉換爲8位十六進制數字。

1

八個字符是一個十六進制表示。

  • 十進制:192.80.24.200
  • HEX:C0.50.18.C8
  • 帶點十六進制字符串:C05018C8

這是快和簡單的方式打包成IP八個字節

相關問題