Dieser Code funktioniert, aber ich frage mich, ob es einen besseren Weg gibt, es zu tun. Grundsätzlich muss ich Bits testen und schreibe das passende Zeichen oder Zeichen in eine Zeichenkette, abhängig vom Zustand des Bits. Die Leerzeichen sind vorhanden, weil die Zeichen mit einer Schriftart mit fester Breite angezeigt werden, und ich möchte sie davon abhalten, sich zu bewegen. C oder C++ ist in Ordnung.Testen von Bits zum Erstellen eines Strings - Gibt es einen besseren Ansatz?
const char* Letters[10] = {"A", "B", "Sl", "St", "R", "L", "U", "D", "RS", "LS"};
const char* Ext[2] = {"X", "Y"};
const char* Spaces[10] = {" ", " ", " ", " ", " ", " ", " ", " ", " ", " "};
char str[60];
char FinalString[60];
void MakeBitString(u16 data, u16 dataExt) {
int x;
strcpy(str, "");
for (x = 0; x < 2; x++) {
//X and Y
if(dataExt & (1 << x)) {
strcat(str, Spaces[x]);
}
else
strcat(str, Ext[x]);
}
for (x = 0; x < 10; x++) {
//the rest
if(data & (1 << x)) {
strcat(str, Spaces[x]);
}
else
strcat(str, Letters[x]);
}
strcpy(FinalString, str);
}
Es macht Sie sicher, dass die Breite der gleiche ist, ob ein Bit gesetzt ist oder nicht. – MSN