符号なしの値4個、ブール値(または整数)2個、最大64個の整数2個、最小値100,000個の整数1個を格納します。単一のハッシュに変換します。 I 2との間の符号化及び復号化することができる私はhere複数の異なる整数の符号化を行うJavaビットマスク
を発見した情報を使用して
- そう
static int encode(int a, int b, int c, int d) {
return a & 0xff | (b << 8) | (c << 16) + (d << 24);
}
static int[] decode(int encoded) {
return new int[] {
encoded & 0xff,
(encoded >> 8 & 0xff),
(encoded >> 16 & 0xff),
(encoded >> 24 & 0xff)
};
}
情報を使用してのような255の最大で4整数のは、私は2つの32を符号化し、復号化することができるhere を発見しましたビット整数。
long hash = (long) a << 32 | b & 0xFFFFFFFFL;
int aBack = (int) (hash >> 32);
int bBack = (int) hash;
さまざまなサイズの整数を格納する方法をミックスしてどのように一致させるかを理解するにはビット演算子を十分に理解できません。
ビットマスクを使用して、異なるサイズの4つの整数を1つの整数にエンコードして戻すにはどうすればよいですか?
ブール値は1ビット、64ビットは6ビット、100000ビットは17ビットが必要です。最大30ビットを追加して動作するように見えます。 – markspace
@markspace値が負でない場合はtrue。 – user949300
@ user949300はい、ありがたいことに、私が使用しているシナリオでは、署名が必要なだけです。 – Greg