BitConverter.ToInt32的替代品

Mus*_*sis 2 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);
Run Code Online (Sandbox Code Playgroud)

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

int i = 34234;
byte B = (byte)(i >> 0);
byte G = (byte)(i >> 8);
byte R = (byte)(i >> 16);
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法来反转这个过程并使用位移来将RGB字节写回现有的int

dtb*_*dtb 8

int i = (B << 0) | (G << 8) | (R << 16);
Run Code Online (Sandbox Code Playgroud)

  • @IVlad:但它让代码更好地阅读,免费. (4认同)
  • 这解除了所示的位移,其为BGR(A)格式.但它不等同于使用RGB(A)格式的BitConverter片段. (2认同)