2016-02-02 38 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