我有两个包含14位左对齐two's complement值的字节,我需要将其转换为有符号的短值(范围从-8192到+8191,我猜?)
最快的方法是什么?
答案 0 :(得分:4)
简单地除以4。
(注意,右移导致实现/未定义的行为。)
答案 1 :(得分:1)
便携式解决方案:
short convert(unsigned char hi, unsigned char lo)
{
int s = (hi << 6) | (lo >> 2);
if (s >= 8192)
s -= 16384;
return s;
}