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
.
Nguồn
2013-04-24 18:09:56
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