首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单字节到RGB,RGB到单字节

单字节到RGB,RGB到单字节
EN

Stack Overflow用户
提问于 2017-01-02 00:26:16
回答 1查看 7.1K关注 0票数 0

我正在创建一个复古仿真器,我不记得如何将单字节转换为RGB值,并将其从RGB转换为单个字节。

我尝试过使用按位的方法,但在这种情况下似乎不起作用。

我发现这个帖子类似于How can I make 3 bytes corresponding to RGB into a single byte?,但是我无法让它工作,因为返回的值大于255。

因此,为了理解,如果任何人过去有一个Atari ST或ZX频谱,彩色托盘是非常紧凑的,可以容纳一个字节,不像今天的4字节rgba。

有人能唤起我的记忆吗?

伪码

代码语言:javascript
复制
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 / ?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-02 00:44:55

如果使用链接答案上的转换算法

代码语言:javascript
复制
rgb8 = [(Red / 32) << 5] + [(Green / 32) << 2] + (Blue / 64)

现在要得到RGB

代码语言:javascript
复制
byte R = (byte) ((rgb8 & 0xE0) >> 5);     // rgb8 & 1110 0000  >> 5
byte G = (byte) ((rgb8 & 0x1C) >> 2);     // rgb8 & 0001 1100  >> 2
byte B = (byte) (rgb8 & 0x03);            // rgb8 & 0000 0011

然后再把它打包成一个字节

代码语言:javascript
复制
byte RGB = (byte)((R << 5) | (G << 2) | B);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41420215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档