2012-11-21 78 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;',當然。 –