簡體   English   中英

如何為字符串生成唯一的整數id?

[英]How to generate a unique integer id for string?

我有一個長字符串列表,應該反復進行比較。 我正在尋找的是一種基於字符串值生成唯一整數值​​的方法,該方法具有最低的RAM / CPU使用率,並且可以完全信任。 為相同的字符串生成值時,應始終返回相同的值。 我知道有很多基於某種哈希/加密機制的算法,但是它們使用大量資源,而且速度不夠快。 提前致謝。

您可以使用某種校驗和函數來處理字符串,並為每個特定的字符串創建一個唯一的數字。我在大型項目中為自己使用了一個函數,希望對您有所幫助

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM