2017-07-21 39 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不是我)可能是因为问题中没有足够的信息。 –