我有字节数组
byte[] PixelData = {255,235};
我想将它转换为short,在此之前我想在转换之前获得前13位,因为当我使用以下代码转换时,不正确的值返回
short val1 = 0;
val1 = BitConverter.ToInt16(PixelData, 0);
任何想法如何做到
答案 0 :(得分:4)
这很可能是一个字节序问题。如果不确定,请改用:
short val1 = (short) ((PixelData[0] << 8) | (PixelData[1]));
如果你真的需要13位,请使用&
掩码:
short val1 = (short) (((PixelData[0] << 8) | (PixelData[1])) & 8191);
注意:我在上面假设了big-endian;如果您的数据是little-endian,只需反转它们:
short val1 = (short) ((PixelData[0]) | (PixelData[1] << 8));
和
short val1 = (short) (((PixelData[0]) | (PixelData[1] << 8)) & 8191);