2013-04-24 103 views

回答

7

發現你可以轉換爲十六進制,像這樣:

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

還是在方法包起來:

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

我沒有意識到它是如此簡單,謝謝!我可以驗證這個@ http://www.statman.info/conversions/hexadecimal.html – Ernest 2013-04-26 03:05:51

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); 

要做相反的事情(十六進制 - >女士訪問),只需反過來執行這些步驟即可。剝去多餘#字符,翻轉回第一/最後兩個值,並轉換這一數字從基地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是完全安全的。

+0

我們如何做相反的事情? – FMFF 2014-06-03 19:33:39

+0

感謝您的反饋,我編輯了包含它的答案:) – 2014-06-03 22:53:59

相關問題