BitConverter.ToInt32的替代品

时间:2010-03-28 16:54:00

标签: c# bit-manipulation bitconverter

我正在使用BitConverter.ToInt32将3个byte值打包到int中,如下所示:

byte R = 0;
byte G = 0;
byte B = 0;
int i = BitConverter.ToInt32(new byte[] { R, G, B, 0 }, 0);

有没有更快的方法来执行此操作,而不是每次都创建新的int?从int中获取字节很简单:

int i = 34234;
byte B = (byte)(i >> 0);
byte G = (byte)(i >> 8);
byte R = (byte)(i >> 16);

是否有一种简单的方法可以反转此过程并使用位移来将RGB字节写回现有的int

2 个答案:

答案 0 :(得分:8)

int i = (B << 0) | (G << 8) | (R << 16);

答案 1 :(得分:4)

你应该考虑Color structure。它具有R,G和B属性以及FromArgb()和ToArgb()方法。