gpt4 book ai didi

将十进制数转换为十六进制数

转载 作者:行者123 更新时间:2023-11-30 19:44:54 24 4
gpt4 key购买 nike

我需要一个函数 rbg() 来将以十进制指定的颜色转换为十六进制。

颜色长度为2字节,编码为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 和 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);
}

我认为这可能有效,但我遇到了问题,我的编译器无法识别字符串。

expected '=', ',', ';', 'asm' or 'atritbute' before 'convertRBGtoHex

到底是什么?

最佳答案

使用您的原始函数作为指导,这应该可以工作:

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"

关于将十进制数转换为十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27180864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com