如何为字符串生成唯一的整数id?

时间:2018-11-30 16:45:02

标签: c# c#-4.0 uniqueidentifier

我有一个长字符串列表,应该反复进行比较。我正在寻找的是一种基于字符串值生成唯一整数值​​的方法,该方法具有最低的RAM / CPU使用率,并且可以完全信任。为相同的字符串生成值时,应始终返回相同的值。我知道有很多基于某种哈希/加密机制的算法,但是它们使用大量资源,而且速度不够快。预先感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用某种校验和函数来处理字符串并为每个特定的字符串创建一个唯一的数字。我在大型项目中为自己使用了一个函数,希望对您有所帮助

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