将3个整数解析为十六进制并返回为RGB十六进制



我一直在做这个Kata,我有点卡在完成这个函数。我搜索了解析,但没有发现解析速记十六进制成RGB的变体。目前我有

public static string Rgb(int r, int g, int b)
{
r = Math.Clamp(r, 0, 255);
g = Math.Clamp(g, 0, 255);
b = Math.Clamp(b, 0, 255);
string hexR = Convert.ToString(r, 16);
string hexG = Convert.ToString(g, 16);
string hexB = Convert.ToString(b, 16);
string res = "000000";
res = res.ReplaceAt(0, hexR.Length, hexR);
res = res.ReplaceAt(2, hexG.Length , hexG);
res = res.ReplaceAt(4, hexB.Length , hexB);
return res.ToUpper();
}

它工作,但个位数十六进制的父解析不正确,例如输入212,53,12结果是D435C0,因为它需要是D4350C

将非常感谢建议和反馈的功能,因为我正在努力改进。

public static string Rgb(int r, int g, int b)
{
r = Math.Clamp(r, 0, 255);
g = Math.Clamp(g, 0, 255);
b = Math.Clamp(b, 0, 255);
int res = r * 256 * 256 + g * 256 + b;
return res.ToString("X");
}

您可以使用格式字符串,正如@Demon在评论

中提到的那样
return $"{r:X2}{g:X2}{b:X2}";

注意X2用大写,而x2用小写

相关内容

  • 没有找到相关文章

最新更新