我需要一个函数rbg()来将十进制指定的颜色转换为十六进制。
颜色长2byte,编码为5:6:5。
我已经开发了一个dec_to_hex函数:
void decimal_hex(int n, char hex[]) /* Function to convert decimal to hexadecimal. */
{
int i=0,rem;
while (n!=0)
{
rem=n%16;
switch(rem)
{
case 10:
hex[i]='A';
break;
case 11:
hex[i]='B';
break;
case 12:
hex[i]='C';
break;
case 13:
hex[i]='D';
break;
case 14:
hex[i]='E';
break;
case 15:
hex[i]='F';
break;
default:
hex[i]=rem+'0';
break;
}
++i;
n/=16;
}
hex[i]='\0';
strrev(hex); /* Reverse string */
}
但是现在我需要将这三个值合并为R G AND B
我需要像
这样的东西int rbg (int r, int g, int b){}
但我无法弄清楚如何合并3次转换。
提前致谢
此致
string ConvertRGBtoHex(int r, int g, int B) {
int rgbNum = ((r & 0xff) << 16)
| ((g & 0xff) << 8)
| (b & 0xff);
return ConvertRGBtoHex(rgbNum);
}
我认为这可能会有效,但我遇到了问题而我的编译器无法识别字符串。
在'convertRBGtoHex 之前预期'=',',',';','asm'或' atritbute '
到底是什么?
答案 0 :(得分:0)
void ConvertRGBtoHex (int r, int g, int b, char* out) {
uint16_t rgbNum = ((r & 0x1f) << 11) |
((g & 0x3f) << 5) |
(b & 0x1f);
decimal_hex (rgbNum, out);
}
char str [5];
str [4] = '\0';
ConvertRGBtoHex (31, 63, 31, str);
printf ("Color: %s\n", str);
"Color: FFFF"