私はレトロなエミュレータを作成していますが、を1バイトのRGB値に戻して1バイトに変換する方法を覚えていません。シングルバイトからRGBへ、そしてRGBからシングルバイトへ
ビットごとの方法を試しましたが、このシナリオではうまくいかないようです。
私はしかし、私はちょうどそれは誰もがアタリSTを持っていた場合は返される値は、理解のために255より大きいだから、あるとして仕事を得ることができない、How can I make 3 bytes corresponding to RGB into a single byte?似ている、この記事を見つけた
またはZX Spectrumでは、カラーパレットは非常にコンパクトで、1バイトに収まるようになり、今日の4バイトrgbaに似ていませんでした。
誰かが私の記憶をジョギングできますか?
擬似コード
int R = 1 (range 0 to 6);
int G = 3 (range 0 to 6);
int B = 5 (range 0 to 6);
// Convert values to single byte
byte myByte = (R << 2) + (G << 1) + (B)
// Convert byte back to RGB
R = myByte/?;
G = myByte/?;
B = myByte/?
この状況で最大値6は、最大の色強度を示しますか? –
チャネルあたり3ビット、3チャネル - > 9ビット。それはどのように1バイトに収まると思われますか?また、R、G、Bはそれぞれ1ビットずつしかシフトされないため、重複します。そのコードは機能しません。 1つのByteに色を合わせたい場合は、パレット(GIFなど)を使用するか、リンクした質問のように1ビット(好ましくは緑色ではない)を犠牲にする必要があります。 –
[RGBに対応する3バイトを1バイトにするにはどうしたらよいですか?](http://stackoverflow.com/questions/12222992/how-can-i-make-3-bytes-corresponding-to-rgb -into-a-single-byte) –