【问题标题】:Convert MS Access Color Code to Hex in C#在 C# 中将 MS Access 颜色代码转换为十六进制
【发布时间】:2013-04-18 08:47:10
【问题描述】:

有没有办法在 C# 中将 MS Access 颜色代码转换为十六进制?

e.g.

 - (white) 16777215 -> #FFFFFF
 - (black) 0        -> #000000
 - (blue)  16711680 -> #0000FF

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

【问题讨论】:

    标签: c# asp.net .net ms-access


    【解决方案1】:

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

     string hexValue = "#" + 16777215.ToString("X");
    

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

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

    【讨论】:

    【解决方案2】:

    您需要将值转换为十六进制,然后将前两位与后两位翻转。例如,将原始值 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 是完全安全的。

    【讨论】:

    • 我们如何做相反的事情?
    • 感谢您的反馈,我编辑了答案以包含它:)
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2020-10-03
    • 2015-04-12
    • 2017-10-30
    • 2018-10-13
    相关资源
    最近更新 更多