Java でビット シフトを使用して 3 つの数値を 1 バイトに格納するにはどうすればよいですか。つまり、最初の 3 ビットを R に、次の 3 ビットを G に、最後の 2 ビットを B に使用します。バイトですが、エンコードとデコードの例は素晴らしいでしょう。
ありがとうジェイク
編集:
R と G の値の範囲は 0 ~ 7、B は 0 ~ 3 です。
が与えられr
、が 0 ~ 255 の範囲にあるg
場合:b
rgb = (b >>> 6) << 6 | (g >>> 5) << 3 | (r >>> 5);
これは、次の順序で結果を記入しています。
+--+--+--+--+--+--+--+--+
|B7|B6|G7|G6|G5|R7|R6|R5|
+--+--+--+--+--+--+--+--+
つまり、あなたが「最初に」と言ったのは、重要度が最も低いという意味だったと思います。逆の方法が必要な場合は、次のようになります。
rgb = (b >>> 6) | (g >>> 5) << 2 | (r >>> 5) << 5;