In Ordnung, ich habe Code ausgearbeitet, um Hex-Zeichen umzukehren, als Teil einer lustigen Übung, die ich erfunden habe. HierWas ist falsch an meinem Algorithmus?
ist das, was ich im Moment haben:
#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;
}
Es funktioniert gut für die meisten Werte. Zum Beispiel wird 0xA0 zu 0x0A usw. ...
Allerdings spielt es nicht gut mit Werten ab, die mit "F" beginnen.
0xF1 wird 0x10
0xFF 0xF0
etc wird ...
jemand mich in die richtige Richtung zeigen kann?
Sie brauchen etwas Spielraum für Ihre Mathematik zu arbeiten. Benutze int für a und b anstatt char. Oder wechseln Sie zu bitweisen Operationen (>><< & und |) anstelle von mathematischen Operationen. –
@KennyTM: du meinst wahrscheinlich 'putchar (cc >> 4 | (cc & 0xf) << 4);' – mjv
Als zusätzliche Anmerkung: es ist nicht notwendig, 'a' von' c' zu subtrahieren, bevor dividiert durch 16. 'b = c/16' ergibt genau das gleiche Ergebnis. So funktioniert Integer Division in C. – AnT