重複の可能性C ++でより小さな文字列でより大きな文字列を減らす方法は? おそらくハッシュによって?
Java で bmp ファイル用の独自のチェックサム アルゴリズムを作成しようとしました。したがって、54 バイト (432 ビット) のヘッダーの場合、結果のチェックサムは 378 ビット長になります。
それをより小さなデータセットに減らすにはどうすればよいですか? 独自のハッシュ アルゴリズムを実装する方法について何か提案はありますか? (条件の 1 つは、既存のアルゴリズムを使用しないことでした)。
非常に単純なハッシュ関数を使用しました。
public static String hash_function(String bmpBytes) {
String hash = "";
int left_shift = Integer.parseInt(bmpBytes);
int right_shift = Integer.parseInt(bmpBytes);
left_shift = left_shift << 2;
right_shift = right_shift >> 2;
int xor = left_shift ^ right_shift;
hash += Integer.toString(xor);
return hash;
}
可能な答え:
「n」個のランダムなバイナリ ビットを生成
n < sizeOf(hash)
し、hash % n-bits
.
それが有効な回答である場合は、お知らせください。質問に回答済みのマークを付けます。