Ce code fonctionne, mais je me demande s'il existe une meilleure façon de le faire. Fondamentalement, j'ai besoin de tester les bits, et écrire le ou les caractères appropriés à une chaîne en fonction de l'état du bit. Les espaces sont présents parce que les caractères seront affichés avec une police de largeur fixe et je voudrais les empêcher de se déplacer. C ou C++ est bien.Test de bits pour créer une chaîne - Y a-t-il une meilleure approche?
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);
}
C'est en vous assurant que la largeur est la même si un bit est réglé ou non. – MSN