我一直在做这个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
用小写