现在网上提供的RGB颜色表多为24BPP,即每像素24位,可很多屏还是16BPP的。
24BPP R:G:B = 8 : 8 : 8;
16BPP多采用R:G:B = 5 : 6: 5;
如果每次都自己转换计算的话多麻烦啊,故用啊哈C做了一段小代码方便使用,WINTC,Turbo C等C编译器都可以,只不过啊哈C兼容64位WIN7比较方便。
现贴出代码
#include <stdio.h>
int main()
{
unsigned int color_24bpp,color_16bpp; //24位和16位的
//24位RGB采用的是8:8:8,16位RGB采用的是5:6:5
unsigned int color_8high,color8_middle,color_8low;
while (1)
{
printf ("input 24bpp:0x \n");
scanf ("%x",&color_24bpp);
printf ("color_24bpp = %x \n",color_24bpp);
color_8high = (color_24bpp << 8) >> 27; //只要高5位
printf ("color_8high = %x \n",color_8high);
color8_middle = (color_24bpp << 16) >>26 ; //只要中间6位
printf ("color8_middle = %x \n",color8_middle);
color_8low = (color_24bpp << 24) >> 27 ; //只要低5位
printf ("color_8low = %x \n",color_8low);
color_16bpp = (color_8high << 11) + (color8_middle << 5) + color_8low ;
}
}
给出一个运行结果图验证下
例如转换24BPP 0xffffff
中间几个printf函数可以删去