我有2个字符。
字符128
和字符2
。
如何将这些字符转换为640
C中的Short ?
我试过了
unsigned short getShort(unsigned char* array, int offset)
{
short returnVal;
char* a = slice(array, offset, offset+2);
memcpy(&returnVal, a, 2);
free(a);
return returnVal;
}
但这没有用,只是将其显示为128
。首选方法是什么?
我发现可接受的答案几乎是正确的,除了我遇到一个错误,有时结果的最高字节是0xff
...
我意识到这是由于C符号扩展引起的。如果第二个字符> = 0x80
,则转换0x80
为short成为0xff80
。对所有内容执行“或”0xff80
运算会导致剩下的最高字节0xff
。
以下解决方案通过在b的隐式转换为short的过程中将b的高位字节清零来避免该问题。
short c = (((short)a) << 8) | (0x00ff & b);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句