从RGB整数转换为十六进制

Toa*_*ums 17 c# bitmap bit-shift

我所拥有的是R:255 G:181 B:178,我在C#工作(对于WP8,更具体)

我想将其转换为十六进制数字以用作颜色(设置WriteableBitmap的像素颜色).我正在做的是以下内容:

int hex = (255 << 24) | ((byte)R << 16) | ((byte)G << 8) | ((Byte)B<<0);
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我才会变蓝.

我有什么想法我做错了吗?

另外,要撤消此操作,要检查RGB值,我将:

int r = ((byte)(hex >> 16)); // = 0
int g = ((byte)(hex >> 8)); // = 0
int b = ((byte)(hex >> 0)); // = 255
Run Code Online (Sandbox Code Playgroud)

NoP*_*God 34

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

string hex = myColor.R.ToString("X2") + myColor.G.ToString("X2") + myColor.B.ToString("X2");
Run Code Online (Sandbox Code Playgroud)

  • 或者只在字节上使用ToString("X2")部分 (3认同)

huy*_*itw 12

使用字符串插值,这可以写成:

$"{r:X2}{g:X2}{b:X2}"
Run Code Online (Sandbox Code Playgroud)


And*_*eas 7

您可以使用较短的字符串格式来避免字符串串联。

string.Format("{0:X2}{1:X2}{2:X2}", r, g, b)
Run Code Online (Sandbox Code Playgroud)