同じ形式で異なる一意の文字列を使用しています。文字列はこのようになりますaxf25!j&809>-11~dc
と私はこの文字列から一意の整数値を取得したい。 この値は毎回同じでなければならず、文字列によって異なります。私は文字列の各文字をintに変換しようとしました。そして、文字を互いに合計します。しかし、同じシンボルセットを持つ2つの文字列がある場合、互いに等しい整数値を返します。それは私に合っていません。一意の文字列から一意の整数値を生成するにはどうすればよいですか?文字列から一意の整数値を取得
UPDATE:
私は一意の整数値を生成する関数を作成することを決め、すべての与えられた解決策を検討しました。私はそれが衝突を排除することを願っています。
public int getUniqueInteger(String name){
String plaintext = name;
int hash = name.hashCode();
MessageDigest m;
try {
m = MessageDigest.getInstance("MD5");
m.reset();
m.update(plaintext.getBytes());
byte[] digest = m.digest();
BigInteger bigInt = new BigInteger(1,digest);
String hashtext = bigInt.toString(10);
// Now we need to zero pad it if you actually want the full 32 chars.
while(hashtext.length() < 32){
hashtext = "0"+hashtext;
}
int temp = 0;
for(int i =0; i<hashtext.length();i++){
char c = hashtext.charAt(i);
temp+=(int)c;
}
return hash+temp;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return hash;
}
なぜ、各文字をASCIIに変換するのに 'getBytes'を使用しないのですか?その後、それらを合計します。 – DevlshOne
'String#hashCode()'を使用しますか? –
hashCodeは一意性を保証しません! – Nolesh