问个C语言的问题!大牛们请进!
#e8f4e8是一个颜色的代码值,对应的十六进制是0XEFBD,请问这个是如何转换的?请大牛们帮忙写下过程,小弟需要转换一些其他颜色的代码值。...
#e8f4e8是一个颜色的代码值,对应的十六进制是0XEFBD,请问这个是如何转换的?
请大牛们帮忙写下过程,小弟需要转换一些其他颜色的代码值。 展开
请大牛们帮忙写下过程,小弟需要转换一些其他颜色的代码值。 展开
4个回答
展开全部
#e8f4e8和0xEFBD都是十六进制的颜色代码值,不同的是前者是3个字节,即常用的rgb24(bit),分别用1个字节表示红r,绿g,蓝b三原色;后者是2个字节,是较老的rgb16(bit)格式,又分为rgb565和rgb555,rgb24向rgb565的转换方法为分别取r的前5个bit,g的前6个bit,b的前5个bit组合成新的整数。
C语言的程序如下:
#include <stdio.h>
int rgbStr_int32(char* str){
int i=0;
sscanf(str,"#%06X",&i);
return i;
}
int rgb24_rgb16(int value){
int r=(value&0xF80000) >>8; /*1111 1000 0000 0000 0000 0000 -> 0000 0000 1111 1000 0000 0000*/
int g=(value&0xFC00) >>5; /*0000 0000 1111 1100 0000 0000 -> 0000 0000 0000 0111 1110 0000*/
int b=(value&0xF8) >>3; /*0000 0000 0000 0000 1111 1000 -> 0000 0000 0000 0000 0001 1111*/
return r|g|b;
}
int main(char* argv, int argc){ char rgb24[]="#E8F4E8";
int i=rgbStr_int32(rgb24);
int j=rgb24_rgb16(0xE8F4E8);
printf("rgb24:%06X \t\t rgb16(565):%04X \n",i,j);
}
C语言的程序如下:
#include <stdio.h>
int rgbStr_int32(char* str){
int i=0;
sscanf(str,"#%06X",&i);
return i;
}
int rgb24_rgb16(int value){
int r=(value&0xF80000) >>8; /*1111 1000 0000 0000 0000 0000 -> 0000 0000 1111 1000 0000 0000*/
int g=(value&0xFC00) >>5; /*0000 0000 1111 1100 0000 0000 -> 0000 0000 0000 0111 1110 0000*/
int b=(value&0xF8) >>3; /*0000 0000 0000 0000 1111 1000 -> 0000 0000 0000 0000 0001 1111*/
return r|g|b;
}
int main(char* argv, int argc){ char rgb24[]="#E8F4E8";
int i=rgbStr_int32(rgb24);
int j=rgb24_rgb16(0xE8F4E8);
printf("rgb24:%06X \t\t rgb16(565):%04X \n",i,j);
}
参考资料: http://blog.csdn.net/juyingmin/article/details/5733761
展开全部
颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。每种颜色的最小值是 0(十六进制:#00)。最大值是 255(十六进制:#FF)。
#280000 rgb(40,0,0)
但是你说的这个转换很少见啊,能否给点更详细的信息
难道是cmyk值?
#280000 rgb(40,0,0)
但是你说的这个转换很少见啊,能否给点更详细的信息
难道是cmyk值?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#e8f4e8就是16进制的,r,g,b依次为 0xe8, 0xf4,0xe8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#e8f4e8 这个就是十六进制表示的颜色。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询