将byte [] buf [offset]转换为int16

时间:2012-01-09 21:17:27

标签: c#

我收到编译错误

  

“无法将int转换为short”。

有什么想法吗?

public Int16 GetInt16(byte[] buf, int offset)
{
    Int16 value = 0;

    value += buf[offset] << 8;

    return value;
}

2 个答案:

答案 0 :(得分:2)

您需要显式转换或转换它。 e.g。

value += Convert.ToInt16(buf[offset] << 8)

答案 1 :(得分:1)

使用BitConverter.ToInt16(缓冲区,起始索引)。这将为您完成工作,您不必重新发明轮子。这也有助于防止意外的代码错误(除了起始索引)。 (是的,这是对问题的一个不同的解决方案,但以更强大的方式完成相同的工作)。

文档:http://msdn.microsoft.com/en-us/library/system.bitconverter.toint16.aspx

编辑:

这在您的特定情况下不起作用,因为您使用一个字节。如果您有缓冲区并且两个字节等于int16那么您将拥有正确的数据。