2012-11-21 52 views
1

好吧,这是交易。我从二进制文件一次读取1个字节。然后我把它放在这样一个int变量:二进制数据整数在C

l = *rbyte; 
    l <<8; 
    <read another byte> 
    l |=*rbyte; 
    l <<8; 
    <read another byte> 
    l |=*rbyte; 
    l <<8; 
    <read another byte> 
    l |=*rbyte; 

现在,这应该大概做工精细,并且像00 00 00 0D它返回13二进制数据,像6和9然而,对于二进制数据00 00 80 00,它只是简单地返回128.当它实际上应该返回32768.什么给?

+0

尝试使用无符号整型或长整型... –

+1

解决办法:'L = L << 8',你只计算不存储结果W /只' l << 8' – nhahtdh

+0

哦是的!该死的!对! – digvijay91

回答

4

因为您没有将左移的结果分配给任何东西。换班经营者不喜欢++--他们不会自动更新他们的论点。

更改您的变速线,以

l = l << 8; 
+0

或'l << = 8;',当然。 –