在C#中将MS Access颜色代码转换为十六进制

Ern*_*est 6 .net c# asp.net ms-access

有没有一种方法可以在C#中将MS Access颜色代码转换为Hex?

e.g.

 - (white) 16777215 -> #FFFFFF
 - (black) 0        -> #000000
 - (blue)  16711680 -> #0000FF
Run Code Online (Sandbox Code Playgroud)

以下是我在stackoverflow上找到的一些参考表

Jef*_*Pry 7

您可以像这样转换为十六进制:

 string hexValue = "#" + 16777215.ToString("X");
Run Code Online (Sandbox Code Playgroud)

或者将其包装在一个方法中:

 public static string AccessToHex(int colorCode) {
      return "#" + colorCode.ToString("X");
 }
Run Code Online (Sandbox Code Playgroud)


Pie*_*ult 5

您需要将值转换为十六进制,然后使用最后两位翻转前两位数字.例如,将原始值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);
Run Code Online (Sandbox Code Playgroud)

要做反向(hex - > 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
Run Code Online (Sandbox Code Playgroud)

请注意,Intew.Max设置为0x7FFFFFFF(我们的颜色代码上限为0xFFFFFF),因此Convert.ToInt32在这里使用它是完全安全的Int64.