有没有办法在 C# 中将 MS Access 颜色代码转换为十六进制?
e.g.
- (white) 16777215 -> #FFFFFF
- (black) 0 -> #000000
- (blue) 16711680 -> #0000FF
这是我在stackoverflow上找到的一些参考表
有没有办法在 C# 中将 MS Access 颜色代码转换为十六进制?
e.g.
- (white) 16777215 -> #FFFFFF
- (black) 0 -> #000000
- (blue) 16711680 -> #0000FF
这是我在stackoverflow上找到的一些参考表
您可以像这样转换为十六进制:
string hexValue = "#" + 16777215.ToString("X");
或者将其包装在一个方法中:
public static string AccessToHex(int colorCode) {
return "#" + colorCode.ToString("X");
}
您需要将值转换为十六进制,然后将前两位与后两位翻转。例如,将原始值 16711680 转换为蓝色会得到十六进制值 FF0000。但是,蓝色的值为 0000FF;需要交换(所以是的,另一个答案是错误的......)
该值也被填充以始终具有 6 个必需的数字。
string rawHex = msAccessColorCode.ToString("X").PadLeft(6, '0');
string hexColorCode = "#" + rawHex.Substring(4, 2) + rawHex.Substring(2, 2) + rawHex.Substring(0, 2);
要执行相反的操作(十六进制 -> Ms Acces),只需反过来执行这些步骤。去掉多余的#
字符,翻转第一个/最后两个值并将该数字从基数 16 转换为基数 10。
string input = "#0000FF";
string hexColorCode = input.TrimStart('#');
string rawHex = hexColorCode.Substring(4, 2) + hexColorCode.Substring(2, 2) + hexColorCode.Substring(0, 2);
string result = Convert.ToInt32(rawHex, 16).ToString(); //16711680
请注意,Intew.Max
它设置为0x7FFFFFFF
(并且我们的颜色代码上限为0xFFFFFF
),因此Convert.ToInt32
在这里使用它而不是Int64
.