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

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

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

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

Ответ 1

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

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

Ответ 2

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

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