[英]Create a unique 4-byte Integer number from a String in PHP
我有一個 SQL 表,它使用字符串作為鍵。 我需要使用 PHP 將該字符串(最多 18 個字符)轉換為唯一的 (!) 4 字節整數。 任何人都可以幫忙嗎?
獨特的? 不可能,對不起。
讓我們仔細看看:
有 18 個字符,即使我們假設只有 128 個可能的 ASCII 字符(7 位),您也會得到 128^18 個可能的字符串(我什至不考慮更短的字符串的可能性!),大約8E37(8 和 37 個零)。
使用 4 字節整數,您將獲得 256^4 個可能的整數,大約為 4E9(40 億)。
所以,字符串比整數多大約 4E28 個; 你不能有一個唯一的映射。
所以,輸入第4294967297個key肯定會遇到沖突,但輸入多一個就有可能遇到沖突。
將字符串查找表保留為整數。 每次遇到新字符串時,都將其添加到映射表中並為其分配一個新的唯一 ID。 這將適用於大約 2^32 個字符串,這可能就足夠了。
對於超過 2^32 個不同的字符串,沒有辦法做到這一點。
你不能。 一個四字節整數可以表示 2^32 = 40 億個值,這不足以容納您的目標空間。
如果當前表中的行少於 40 億行,則可以創建一個交叉表,為每個行分配一個增量值。 使用這種方法,您將被限制為 40 億行,但這可能適合您的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.