Nom Ascii de valeur

Y at-il un moyen d’obtenir le nom de la valeur de ascii.

par exemple

0x08 ou seulement 8 est le retour arrière

puis-je obtenir le nom “Backspace” en c ou c ++?

Bref non. Facilement contourné, cependant.

Si votre code ASCII est <32, voici le tableau des abréviations de caractères de contrôle ASCII standard que vous pouvez utiliser:

 char *ascii_cc[] = { "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", "BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US" }; 

Ensuite, indexez simplement dans ce tableau de chaînes en fonction de la valeur du caractère qui vous intéresse.

 char c = 8; /* backspace */ printf("ASCII control code = %s\n", ascii_cc[c]); 

Il n’y a aucun moyen de faire cela dans la norme et je ne connais pas de bibliothèque tierce capable de le faire. Votre meilleure option est de créer une table avec les mappages par vous-même. Il vous suffira de créer quelques correspondances spéciales, car la plupart des caractères sont appelés ainsi.

Il n’y en a que 128 (les 128 derniers diffèrent en fonction de la page de code utilisée), pourquoi ne créez-vous pas un tableau const? Si vous limitez vos données à des caractères non imprimables, le nombre d’éléments chute à 32.

Vous pouvez trouver la liste complète sur Wikipedia .

Voici les 32 premières valeurs:

  Dec Abbr Nom
 0 NUL Caractère nul
 1 SOH Début d'en-tête
 2 STX Début du texte
 3 Fin du texte ETX
 4 fin de transmission EOT
 5 ENQ Enquête
 6 accusé de réception ACK
 7 BEL Bell
 8 BS Backspace [d] [e]
 9 onglet horizontal HT [f]
 10 sauts de ligne LF
 Onglet Vertical 11 VT
 Flux de formulaire 12 FF
 13 CR retour chariot [g]
 14 SO Décaler
 15 SI Shift In
 16 DLE Data Link Escape
 17 DC1 Device Control 1 (souvent XON)
 18 DC2 Device Control 2
 19 DC3 Device Control 3 (souvent XOFF)
 20 DC4 Device Control 4
 21 NAK accusé de réception négatif
 22 SYN synchrone inactif
 23 Bloc de fin de transmission ETB
 24 CAN Annuler
 25 EM Fin de Medium
 26 Sub Substitute
 27 ESC Escape [i]
 Séparateur de fichiers 28 FS
 29 séparateur de groupe GS
 30 séparateur d'enregistrement RS
 Séparateur de 31 unités américaines 

man ASCII peut aider:

 #include  #include  FILE *popen(const char *command, const char *mode); int pclose(FILE *stream); int main(void) { FILE *cmd = popen("man ASCII", "r"); char *key = "010"; char result[128]; while (fgets(result, sizeof(result), cmd) != NULL) if (strstr(result, key)) printf("key %s: %s", key, result); pclose(cmd); return 0; }