在论坛上了看了个需求,问题倒不难,只是解决方式问题,感觉用宏写起来麻烦,特别是多字节的情况,留个备注。 #include <stdio.h> #include <stdlib.h> unsigned char ru8(unsigned char s) { unsigned char rtn = 0 ; int i ; for(i = 0 ; i < 8 ; i++) { rtn |= ((s & (1 << i)) >> i) << (7 - i) ; } return rtn ; } int main() { unsigned i = 0 ; unsigned char s , m , d ; for(i = 0 ; i < 256 ; i++) { s = i ; d = ru8(s) ; m = ru8(d) ; if(m != s) { printf("s = %hhu , m=%hhu d = %hhu , error !/n" , s , m , d) ; } } return 0 ; }