我有一大組名稱(數以百萬計)。他們每個人都有一個名字,一個可選的中間名和一個姓氏。我需要將這些名稱編碼爲唯一代表名稱的數字。編碼應該是一對一的,即一個名字只能與一個數字相關聯,而一個數字只能與一個名字相關聯。將名稱字符串編碼爲唯一編號
什麼是對此進行編碼的智能方式?我知道根據它在字母集中的位置(a-> 1,b-> 2 ...等)標記每個字母的名稱很容易,所以像Deepa這樣的名字會得到 - > 455161,但是再次在這裏,我不能說如果'16'是真的16或1和6的組合。
所以,我正在尋找一種智能的編碼方式。
此外,編碼應該是這樣的,即任何名字的輸出數字中的數字的數量應該具有固定的數字位數,即它應該與長度無關。這可能嗎?
感謝 阿布舍克小號
這不會解決固定長度的問題,但你可以將每個字母編碼爲2個數字:a = 01,b = 02 .... j = 10,k = 11 ... z = 26。做這種轉換的重點是什麼?可能有更好的解決方案。另外,你可能提出的任何哈希函數*將會在某個點發生碰撞(即,不嚴格爲1:1)。爲什麼不能只用一個序列號的數據庫表作爲關聯名稱的關鍵字?隨着新名字的出現,只需查找它們即可找到它們的關鍵字,如果沒有的話就添加它們。 – NealB 2012-04-26 18:07:09
你需要解釋更多關於你的動機。天真地說,您可以簡單地將名稱的utf-8表示作爲(非常大的)base-256數字;翻譯成你喜歡的任何基地 - 但這是非常無用的。如果您只需要每個名稱的唯一標識符,那麼數據庫可能是您的最佳選擇。 – 2012-04-27 01:34:01
目標是能夠在3D維度空間中的其中一個維度上繪製名稱,其中另外兩個維度本質上已經是數字。因此,由於名稱本質上是文本的,因此我們需要在將它們繪製之前將名稱轉換爲數字。 – 2012-04-27 03:55:33