2017-07-21 40 views
-1

我有兩個字節變量,我想顛倒MSB字節的位。在兩個字節長的變量中反轉一個字節

我使用這個功能來扭轉字節:

uint8_t reverse_bits(uint8_t a){ 

    return ((a & 0x1) << 7) | ((a & 0x2) << 5) | 
      ((a & 0x4) << 3) | ((a & 0x8) << 1) | 
      ((a & 0x10) >> 1) | ((a & 0x20) >> 3) | 
      ((a & 0x40) >> 5) | ((a & 0x80) >> 7); 
} 

我寫了這個功能,收到我的變量和反向第二個字節:

uint16_t reverseByte(uint16_t b){ 

    uint16_t b0 ; 

    uint16_t b1 ; 
    uint8_t revb; 
    uint8_t retb ; 
    b0 = b & 0x00FF; 
    b1 = b & 0xFF00; 
    revb = b1 >> 8; 
    retb = reverse_bits(revb); 
    b1 = retb; 
    b1 = b1 << 8; 

    return (b1 + b0); 
} 

我得到的錯誤衝突的類型for reverseByte在函數的第一行。

我該如何糾正它?我知道代碼遠沒有優雅,我只需要一個快速修復。

謝謝!

+1

不直接相關,但在初始化之前使用'revb'。 –

+0

並在哪一行__exactly__中得到錯誤?請閱讀:[mcve]。 –

+0

您是否在使用它之後聲明瞭該功能? –

回答

0

問題在於函數的聲明。我在宣佈之前使用過它,至少在我的情況下。

我初始化的局部變量也擺脫了警告

謝謝你的提示。儘管我不明白投票的結果。

+1

downvote(BTW不是我)可能是因爲問題中沒有足夠的信息。 –