2012-01-24 23 views
0

ライブデータを収集するために私のアプリケーションがやりとりするサーバのIPアドレスのリストがあります。収集されたデータは別のシステムのスロットに送信されます。これらのスロットは、8文字の長さの文字列で識別されます。そして私はプログラム的にこのスロットを作りたいと思います。私は8文字の文字列にサーバーのIPアドレスをマップするメソッドを作成したいと思います。例えば。与えられた192.80.24.200 SLOT0001を返します。私はハッシュ関数は良い解決策になると仮定しますが、どのように実装されているのか分かりません。IPアドレスを8文字の長い文字列にマップするにはどうすればよいですか?

アプリケーションはC#Winforms .Net Framework 4.0です。また、サーバーはWindowsベースのサーバーです。

+0

あなたはIPを難読化したいのですか、または元のIPへの文字列を元に戻すことは受け入れられますか? – Yahia

+0

私は難読化するソリューションを好んでいますが、文字列からIPを理解できるようなものは受け入れられます。 – CleanCoder

+1

解決策はIPv6アドレスをサポートする必要がありますか? –

答えて

2

アンIPアドレスは直接8進数文字のように書くことができる長い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

IPv4アドレスは、とにかくです。 –

5

IPアドレスを32ビットの数字に変換し、8桁の16進数に変換します。

1

8文字HEX表現です。

  • 進:192.80.24.200
  • HEX:C0.50.18.C8
  • ドットなしHEX文字列:C05018C8

これは高速で、8バイトにIPをパックする簡単な方法

関連する問題