2013-04-24 12 views

Trả lời

7

Bạn có thể chuyển đổi sang hex như vậy:

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

Hoặc quấn nó lên trong một phương pháp:

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

Tôi không nhận ra điều đó thật đơn giản, Cảm ơn bạn! Tôi có thể xác minh điều này @ http://www.statman.info/conversions/hexadecimal.html – Ernest

5

Bạn cần phải chuyển đổi các giá trị cho hệ thập lục phân, sau đó lật hai chữ số đầu tiên với hai vừa qua. Ví dụ, chuyển đổi giá trị thô của 16711680 cho màu xanh cho một giá trị hex của FF0000. Tuy nhiên, giá trị cho màu xanh là 0000FF; hoán đổi là bắt buộc (Vì vậy, có, câu trả lời khác là sai ...)

Giá trị cũng được đệm để luôn có 6 chữ số bắt buộc.

string rawHex = msAccessColorCode.ToString("X").PadLeft(6, '0'); 
string hexColorCode = "#" + rawHex.Substring(4, 2) + rawHex.Substring(2, 2) + rawHex.Substring(0, 2); 

Để làm ngược lại (hex -> Ms Acces), chỉ cần thực hiện các bước theo cách khác. Tước thêm # nhân vật, lật lại là người đầu tiên/cuối cùng hai giá trị và chuyển đổi con số đó từ cơ sở 16 căn 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 

Xin lưu ý rằng Intew.Max được thiết lập để 0x7FFFFFFF (Và mã màu của chúng tôi cap tại 0xFFFFFF), do đó, hoàn toàn an toàn khi sử dụng Convert.ToInt32 tại đây thay vì Int64.

+0

Làm cách nào để chúng tôi làm ngược lại? – FMFF

+0

Cảm ơn phản hồi của bạn, tôi đã chỉnh sửa câu trả lời để bao gồm nó :) –