在两个字节长的变量中反转字节

时间:2017-07-21 10:01:53

标签: c types casting

我有一个两个字节变量,我想要反转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);
}

我在函数的第一行收到错误 reverseByte的冲突类型

我该如何纠正?我知道代码远非优雅,我只需要快速修复。

谢谢!

1 个答案:

答案 0 :(得分:0)

问题在于函数的声明。我在宣布它之前使用过它,至少在我的情况下。

我也初始化了局部变量以消除警告

感谢您的提示。我不理解投票结果。