在C#中将字节[3]转换为字节[2]

时间:2018-09-28 08:42:11

标签: c# byte

我目前有一个字节数组列表,其中有3个字节。该数组需要转换为2个字节的字节数组,并且应该缩放范围以使值适合2个字节。

只要所有值都以相同的数量缩放,就可以放松一些精度。

1 个答案:

答案 0 :(得分:2)

通常,您可以按照以下步骤将字节转换为整数然后再转换回字节:

var input = new byte [] { 0x45, 0x67, 0x89 };

// Depending on byte order, use either the first or second conversion
var converted1 = ((int)input[0] << 16) | ((int)input[1] << 8) |
                  (int)input[2];
var converted2 = ((int)input[2] << 16) | ((int)input[1] << 8) |
                  (int)input[0];

// Not sure what kind of scaling you want, here I just shift right
var scaled1 = converted1 >> 8;
var scaled2 = converted2 >> 8;

// Convert back to a byte array
var output1 = new byte [] { (byte)(scaled1 >> 8), (byte)(scaled1 & 0xff) };
var output2 = new byte [] { (byte)(scaled2 & 0xff), (byte)(scaled2 >> 8) };

希望有帮助!

编辑:在converted1converted2中,按位AND更改为OR。感谢@AleksAndreev指出我的错误!