Как создать уникальный целочисленный идентификатор для строки? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть список длинных строк, которые нужно многократно сравнивать друг с другом.То, что я ищу, это способ генерирования уникального целочисленного значения на основе значения строки, которое имеет минимальное использование ОЗУ / ЦП и может быть полностью доверенным.Генерация значения для одинаковых строк всегда должна возвращать одно и то же значение.Я знаю, что есть много алгоритмов, основанных на некотором механизме хеширования / шифрования, но они используют много ресурсов, и они не достаточно быстры.Заранее спасибо.

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете использовать какую-то функцию проверки суммы, которая обрабатывает строки и делает уникальный номер для каждой конкретной строки. Есть функция, которую я использую в крупномасштабном проекте для себя, надеюсь, она поможет

private string GetChecksum(string text)
        {
            long sum = 0;
            byte overflow;
            for (int i = 0; i < text.Length; i++)
            {
                sum = (long)((16 * sum) ^ Convert.ToUInt32(text[i]));
                overflow = (byte)(sum / 4294967296);
                sum = sum - overflow * 4294967296;
                sum = sum ^ overflow;
            }

            if (sum > 2147483647)
                sum = sum - 4294967296;
            else if (sum >= 32768 && sum <= 65535)
                sum = sum - 65536;
            else if (sum >= 128 && sum <= 255)
                sum = sum - 256;

            sum = Math.Abs(sum);

            return sum.ToString();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...