2013-04-24 16 views

Odpowiedz

7

można przekonwertować hex tak:

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

lub owinąć go w metodzie:

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

Nie zdawałem sobie sprawy, że to takie proste, dziękuję! Potrafię zweryfikować ten @ http://www.statman.info/conversions/hexadecimal.html – Ernest

5

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.

+0

Jak wykonać odwrotny proces? – FMFF

+0

Dzięki za twoją opinię, zredagowałem odpowiedź, aby ją dołączyć :) –