0

Java でビット シフトを使用して 3 つの数値を 1 バイトに格納するにはどうすればよいですか。つまり、最初の 3 ビットを R に、次の 3 ビットを G に、最後の 2 ビットを B に使用します。バイトですが、エンコードとデコードの例は素晴らしいでしょう。

ありがとうジェイク

編集:

R と G の値の範囲は 0 ~ 7、B は 0 ~ 3 です。

4

1 に答える 1

2

が与えられ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; 
于 2012-10-07T12:19:21.323 に答える