unsigned short length = 0;
unsigned char pack[] = {\x01\x02};
length =pack[0] << 8 + pack[1];
结果length的值是0
这是什么问题呢
length = pack[0] << 8 ;
length + = pack[1];
这个的结果length为0x0102;
原因就是算术运算符的优先级,+的优先级高于<<
解决方法有
length = (unsigned short)(pack[20] << 8) + (unsigned short)pack[21];
或者
length = (pack[20] << 8) + pack[21];