问个C语言的问题!大牛们请进!

#e8f4e8是一个颜色的代码值,对应的十六进制是0XEFBD,请问这个是如何转换的?请大牛们帮忙写下过程,小弟需要转换一些其他颜色的代码值。... #e8f4e8是一个颜色的代码值,对应的十六进制是0XEFBD,请问这个是如何转换的?
请大牛们帮忙写下过程,小弟需要转换一些其他颜色的代码值。
展开
 我来答
帐号已注销
2013-02-02 · TA获得超过204个赞
知道小有建树答主
回答量:101
采纳率:0%
帮助的人:99.3万
展开全部
#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);
}

参考资料: http://blog.csdn.net/juyingmin/article/details/5733761

御含灵9r
2013-02-01 · TA获得超过4157个赞
知道大有可为答主
回答量:3007
采纳率:0%
帮助的人:2648万
展开全部
颜色由一个十六进制符号来定义,这个符号由红色、绿色和蓝色的值组成(RGB)。每种颜色的最小值是 0(十六进制:#00)。最大值是 255(十六进制:#FF)。
#280000 rgb(40,0,0)
但是你说的这个转换很少见啊,能否给点更详细的信息

难道是cmyk值?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Hongbo9t
2013-02-01 · TA获得超过150个赞
知道小有建树答主
回答量:313
采纳率:0%
帮助的人:147万
展开全部
#e8f4e8就是16进制的,r,g,b依次为 0xe8, 0xf4,0xe8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
理春冬s9
2013-02-02 · TA获得超过774个赞
知道小有建树答主
回答量:1063
采纳率:0%
帮助的人:447万
展开全部
#e8f4e8 这个就是十六进制表示的颜色。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式