我收到编译错误
“无法将int转换为short”。
有什么想法吗?
public Int16 GetInt16(byte[] buf, int offset)
{
Int16 value = 0;
value += buf[offset] << 8;
return value;
}
答案 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那么您将拥有正确的数据。