好的,我已经准备好一些代码来反转十六进制字符,作为我想出的一个有趣的练习的一部分。
目前我拥有以下代码:
#include <stdio.h>
int main() {
char a,b,c;
while (1) {
c = getchar();
if (!feof(stdin)) {
a = c % 16;
b = (c - a) / 16;
c = (a*16) + b;
putchar(c);
}else{break;}
}
return 0;
}
对于大多数值来说,它的工作表现良好。例如,0xA0变为0x0A等等...
然而,它在以'F'开头的值方面表现不佳。
0xF1变为0x10
0xFF变为0xF0
等等...
有人能指导我正确的方向吗?
putchar(cc>>4|(cc&0xf)<<4);
。 - mjvc
除以16之前,无需从a
中减去c
。b = c / 16
将会给出完全相同的结果。这就是C语言中整数除法的工作原理。 - AnT stands with Russia