代码中怎样把RGB颜色值转换成16进制?

比如说RGB(255,255,255)转成16进制是0xffffff。但是有没有人可以通过标准C语言用代码实现啊~~我需要一个可以把一个16进制颜色值与RGB三个颜色值互... 比如说RGB(255,255,255)转成16进制是0xffffff。
但是有没有人可以通过标准C语言用代码实现啊~~
我需要一个可以把一个16进制颜色值与RGB三个颜色值互相转换的代码,谁来帮个忙啊
我有个函数中要传入r,g,b三个值,可我用时,只能用一个值的颜色,程序返回时还是得把那一个值转成r,g,b三个值.
展开
 我来答
lyz810
2015-07-14 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31779
前端开发工程师

向TA提问 私信TA
展开全部
rgb颜色格式是由3组0~255的数字构成,分别是红(Red)、绿(Green)、蓝(Blue)的色值。
转为16进制就是分别把红绿蓝三种颜色的色值转为十六进制,前面加个井号
例如:
rgb(255,255,255),255的16进制为FF,所以结果就是#FFFFFF。
L_o_o_n_i_e
2008-09-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5238万
展开全部
简单的移位和按位加:

int r,g,b;
int c; // TC 用 long int;
// 如果次序是RRGGBB
c = r << 16 | g << 8 | b;

// 如果次序是BBGGRR
c = b << 16 | g << 8 | r;
---------------------------------
例如:

#include "stdio.h"

int RGB(int r,int g,int b)
{
return r << 16 | g << 8 | b;
}

void main()
{
int r,g,b,c;
r = 255; g=255; b=255;
c = RGB(r,g,b);
printf("0x%06x",c);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友df18f026d
2008-09-23 · TA获得超过130个赞
知道答主
回答量:88
采纳率:0%
帮助的人:100万
展开全部
MSDN中对RGB结构体的定义如下:
The RGB macro is defined as follows.

#define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | \
((WORD) (g) << 8)) | \
(((DWORD) (BYTE) (b)) << 16)))
由此可见,一个DWORD体中的后三个字节分别是B,G,R;最前一个字节为零。
fun(BYTE R,BYTE G,BYTE B)
{
DWORD wValue;
wValue = RGB(R,G,B);
printf("%x", wValue);



//以下将DWORD转化为R,G,B
R = wValue & 0xff;
G = (wValue>>8)&0xff;
B = (wValue >>16) & 0xff;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fishert
2008-09-23 · TA获得超过150个赞
知道答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
string RGBConvert(int r,int g,int b)
{
char r_str[3],g_str[3],b_str[3];
string result = "0x";
itoa(r,r_str,16);
itoa(g,g_str,16);
itoa(b,b_str,16);
result + = string(r_str)+string(g_str)+string(b_str);
return result;
}

没有编译过,你自己调试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式