trzeba konwertować wartości szesnastkowej, a następnie odwrócić dwie pierwsze cyfry z dwóch ostatnich. Na przykład konwersja wartości nieprzetworzonej 16711680 dla niebieskiego daje wartość szesnastkową FF0000. Jednak wartość niebieskiego wynosi 0000FF; wymagana jest zamiana (więc tak, druga odpowiedź jest błędna ...)
Wartość jest również dopełniana, aby zawsze mieć 6 wymaganych cyfr.
string rawHex = msAccessColorCode.ToString("X").PadLeft(6, '0');
string hexColorCode = "#" + rawHex.Substring(4, 2) + rawHex.Substring(2, 2) + rawHex.Substring(0, 2);
Aby zrobić odwrotną stronę (hex -> Ms Acces), po prostu wykonaj kroki odwrotnie. Rozebrać dodatkowy #
charakter, flip powrotem pierwsze/ostatnie dwie wartości i przekształcić tę liczbę od podstawy 16 do oparcia 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
Uwaga Intew.Max
jest ustawiony na 0x7FFFFFFF
(A nasze kody kolorów cap na 0xFFFFFF
) więc jest całkowicie bezpieczny w użyciu tutaj zamiast.
Nie zdawałem sobie sprawy, że to takie proste, dziękuję! Potrafię zweryfikować ten @ http://www.statman.info/conversions/hexadecimal.html – Ernest