从短的第13位获得

时间:2012-02-06 07:21:11

标签: c#

我有字节数组

byte[] PixelData = {255,235};

我想将它转换为short,在此之前我想在转换之前获得前13位,因为当我使用以下代码转换时,不正确的值返回

short val1 = 0;
val1 = BitConverter.ToInt16(PixelData, 0);

任何想法如何做到

1 个答案:

答案 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);