2016-02-02 76 views

回答

0

您可以從Java中的每個對象(這是幾乎所有)中提取的哈希碼。

因此,您可以使用hashCode()方法從字符串中獲取散列。無法設置您將獲得的散列長度,但您始終可以將散列解析爲字符串並用子字符串截斷它。

這樣一來,你可以做這樣的事情:

//Get the hash 
int hash = yourString.hashCode(); 
//Parse it to String 
String yourHash = Integer.toString(hash); 
//Truncate the hash 
String truncatedHash = yourHash.substring(0, 12) 

如果你希望你的哈希回一個整數,你只需要做Integer.parseInt(truncatedHash)

這不是最清晰的解決方案,但我不知道您想要達到的目標。

+0

不錯,但我忘了告訴,哈希應該是一個ID,所以我需要保證,不會被重複某個時間。 – Fabio

+0

@Fabio,這實際上是不可能的。如果你把所有長度爲13的字符串放到你選擇的任何算法中,你將不得不得到一些重複,因爲長度爲13的字符串比長度爲12的字符串更多。 –

+0

如果你想要一個密鑰或者一些東西來標識你的字符串,最簡單的方法就是從對象中取出哈希代碼,而不會將它截斷爲只有12個字符。 – gascon95