2012-10-07 51 views
0

如何在java中使用位移在一個字節中存儲3個數字,即前3位用於R,後3位用於G,最後2位B. I認爲我知道如何從字節中檢索數字,但編碼和解碼的例子會很好。RBG 24bit到RGB 8bit位移

由於傑克

編輯:

用於R和G的值的範圍將是0-7和0-3爲B.

+0

你去「哇,這吹EGA出水!」 – paddy

+0

你確定嗎?雖然會有數據丟失。 – nhahtdh

+0

@paddy:你認爲今天有人問這樣的問題是否知道EGA是什麼樣的?我不這麼認爲。歷史重演... –

回答

2

鑑於rgb是在範圍0 - 255:

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;