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

6
2个回答

7
您可以这样将其转换为十六进制:
 string hexValue = "#" + 16777215.ToString("X");

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

 public static string AccessToHex(int colorCode) {
      return "#" + colorCode.ToString("X");
 }

我没有意识到这是如此简单,谢谢!我能够在http://www.statman.info/conversions/hexadecimal.html上进行验证。 - Ernest
根据@Pierre-Luc Pineault的评论,需要进行交换: 您必须将该值转换为十六进制,然后将前两个数字与后两个数字交换。例如,将蓝色的原始值16711680转换为十六进制值FF0000。然而,蓝色的值是0000FF。 - Alireza

7
你需要将值转换为十六进制,然后将前两个数字与后两个数字交换位置。例如,将蓝色的原始值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 Access),只需将步骤反过来。去掉额外的#字符,将第一个/最后两个值翻转回来,并将该数字从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是完全安全的。

我们如何进行反向操作? - FMFF
感谢您的反馈,我已经编辑了答案并包含了它 :) - Pierre-Luc Pineault

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接