我有2个字符。我想像这样添加它们:
11000010
00010000
00010000 11000010
我的结果应该是一个int。 (左侧的其他字节应为0)
我正在做的是:int i = (c2 <<8) + c1;
但这给了我一个与预期完全不同的价值。 (当我用+
替换|
时)
有谁能告诉我这里做错了什么? 非常感谢!
答案 0 :(得分:5)
char
在您的平台上为signed
。
如果您对unsigned char
和c2
的类型使用c1
,则表达式中每个字词的隐式促销int
将具有您所效果的效果。
答案 1 :(得分:4)
您可以使用乘法而不是移位:
int i = (int)c2 * 256 + c1;