1

値が文字列である重要ではないタグがあります。タグ値の変化を確認したい。ただし、これにはクライアントサーバーが関係するため、文字列の比較は行いません。代わりに、文字列のある種の値を計算し、その値を使用して文字列の変更を検出します。文字列は重要ではないので、文字列への変更を検出するのに役立つそのような値を計算するための非常に簡単で迅速な解決策があるかどうか疑問に思います。

4

2 に答える 2

2

.hashCode()を使用します

String.hashCode()損失があるため、完全ではありません。したがって、文字列が変更され、同じハッシュコードを持つ可能性があります。(ただし、これは頻繁には発生しません)文字列が変更されるたびに、そのハッシュコードも変更されます。

だからあなたはあなたが何に入っているのか知っています、のためのコードString.hashCode()はこれです:

public int hashCode() {
    int h = hash;  // the cached hash value
    int len = count;  // the number of characters in the string
    if (h == 0 && len > 0) {
        int off = offset;
        char val[] = value;

        for (int i = 0; i < len; i++) {
            h = 31*h + val[off++];
        }
        hash = h;
    }
    return h;
}
于 2012-05-09T16:12:02.833 に答える
0

はい。ただし、一意性が必要な場合はハッシュコードを使用しないでください。SHA256ダイジェストを使用します。

String tag = "...";
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(text.getBytes("UTF-8"));
byte[] digest = md.digest();
于 2012-05-09T16:15:25.540 に答える