Как мне сопоставить IP-адрес с длинной строкой из восьми символов? - PullRequest
0 голосов
/ 24 января 2012

У меня есть список IP-адресов серверов, с которыми мое приложение взаимодействует для сбора данных в реальном времени.И собранные данные отправляются в слоты в другой системе.Эти слоты идентифицируются по восьми символьным строкам.И я хотел бы создать эти слоты программно.Я хотел бы создать метод, который будет отображать IP-адрес сервера в строку из восьми символов.например.учитывая 192.80.24.200 он вернет SLOT0001 Я предполагаю, что хеш-функция будет хорошим решением, но я не уверен, как она реализована.

Приложение представляет собой C # Winforms .Net Framework 4.0.И серверы являются серверами на базе Windows.

Ответы [ 3 ]

5 голосов
/ 24 января 2012

Хорошо, преобразуйте IP-адрес в 32-разрядное число и преобразуйте его в 8 шестнадцатеричных цифр.

2 голосов
/ 24 января 2012

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();
}
1 голос
/ 24 января 2012

Восемь символов - это шестнадцатеричное представление.

  • Десятичное число: 192.80.24.200
  • HEX: C0.50.18.C8
  • HEX-строка без точек: C05018C8

это более быстрый и простой способ упаковки IP в восемь байтов

...