我目前有一个字节数组列表,其中有3个字节。该数组需要转换为2个字节的字节数组,并且应该缩放范围以使值适合2个字节。
只要所有值都以相同的数量缩放,就可以放松一些精度。
答案 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) };
希望有帮助!
编辑:在converted1
和converted2
中,按位AND更改为OR。感谢@AleksAndreev指出我的错误!