Преобразование из RGB ints в Hex

У меня есть R: 255 G:181 B: 178, и я работаю в C# (для WP8, если быть более конкретным)

Я хотел бы преобразовать это в шестнадцатеричное число для использования в качестве цвета (чтобы установить цвет пикселя WriteableBitmap). Я делаю следующее:--3-->

int hex = (255 << 24) | ((byte)R << 16) | ((byte)G << 8) | ((Byte)B<<0);

но когда я это делаю, я просто синий.

любые идеи, что я делаю неправильно?

кроме того, чтобы отменить это, чтобы проверить значения RGB, я:

int r = ((byte)(hex >> 16)); // = 0
int g = ((byte)(hex >> 8)); // = 0
int b = ((byte)(hex >> 0)); // = 255

4 ответов


Color myColor = Color.FromArgb(255, 181, 178);

string hex = myColor.R.ToString("X2") + myColor.G.ToString("X2") + myColor.B.ToString("X2");

вы можете использовать более короткий формат строки, чтобы избежать конкатенаций строк.

string.Format("{0:X2}{1:X2}{2:X2}", r, g, b)

используя строковую интерполяцию, это можно записать как:

$"{r:X2}{g:X2}{b:X2}"

приветствую собратьев,

//Red Value
int integerRedValue = 0;
//Green Value
int integerGreenValue = 0;
//Blue Value
int integerBlueValue  = 0;

string hexValue = integerRedValue.ToString("X2") + integerGreenValue.ToString("X2") + integerBlueValue.ToString("X2");