这是一个令人头痛的问题.我搜索了一切,发现很少,对unicode知之甚少,从搜索中学到了一点.我需要的是非常简单的,对吧?我正在使用的结构需要COLOR16.
所以我知道0x0000和0x00FF是0到255,这对COLOR16来说是没用的.
我看到的每个可以代表0到15的四个零.
我知道COLOR16代表所有16 ^ 4种颜色.
但我不能为我的生活弄清楚如何将(R:100; G:35; B:42)转换为unicode值.
我真的可以使用这方面的一些信息,或教程或任何东西.
谢谢.
我知道你在找什么.你只是问错了方法.您的意思是short值,而不是Unicode值.这个的通用名称是RGB565.这意味着红色为5位,绿色为6位,蓝色为5位.
最多可加16位.你打包这样的位:
unsigned short val = ((r<<8) & 0xf800) | ((g<<3) & 0x07e0) | (b>>3);
Run Code Online (Sandbox Code Playgroud)
这些位是这样的:
R 00000000 12345xxx -> 12345000 00000000 (shift left by 8 and masked)
G 00000000 123456xx -> 00000123 45600000 (shift left by 3 and masked)
B 00000000 12345xxx -> 00000000 00012345 (shift right by 3, no mask required)
Run Code Online (Sandbox Code Playgroud)
显然,在这个过程中信息丢失了.您只需要使用颜色中最重要的部分并使用它.这就像有损压缩,但是当你没有注意到颜色定义的损失时,它对视频非常有用.绿色获得额外位的原因是因为人眼对该光谱中的颜色更敏感.
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |