Imprimer table ascii de 0 à 127
ai une question au sujet de l'impression de l'128 premiers caractères de la table ascii. Je n'ai pas réussi jusqu'à présent encore, parce que j'ai déjà buté à un problème. Le code suivant imprime la valeur correcte à partir de 32 et 127. De 0 à 31 cependant, il imprime des débris de valeurs. Je suppose que c'est correct aussi bien depuis que j'rapide bilan sur la asciitable.com ces valeurs représente quelque chose d'autre à côté de l'ABC...Z.
Donc ma question est comment je peux imprimer ces valeurs comme dans l'exemple de sortie? Et aussi je voudrais savoir comment on doit écrire un programme qui imprimer comme dans l'exemple de sortie. Depuis le solutions, je pense, ferait me donner de sortie par exemple de 1 à 10 caractères dans une des lignes à la place pour des colonnes.
int main()
{
int i =0;
for(int rows = 0; rows < 16; rows++)
{
i = rows;
while(i <= 127)
{
if(i <= 15)
cout << hex << setw(2) << setfill('0') << i << "= " << setw(2) << setfill(' ') << toStr(i) << " | ";
else
cout << hex << setw(2) << setfill('0') << i << "= " << setw(2) << setfill(' ') << char(i) << " | ";
i+=16;
}
cout << "\n";
}
return 0;
}
Exemple de sortie
+--------+--------+--------+--------+--------+--------+--------+--------+
| 00 | 10 | 20 ' ' | 30 '0' | 40 '@' | 50 'P' | 60 '`' | 70 'p' |
| 01 | 11 | 21 '!' | 31 '1' | 41 'A' | 51 'Q' | 61 'a' | 71 'q' |
| 02 | 12 | 22 '"' | 32 '2' | 42 'B' | 52 'R' | 62 'b' | 72 'r' |
| 03 | 13 | 23 '#' | 33 '3' | 43 'C' | 53 'S' | 63 'c' | 73 's' |
| 04 | 14 | 24 '$' | 34 '4' | 44 'D' | 54 'T' | 64 'd' | 74 't' |
| 05 | 15 | 25 '%' | 35 '5' | 45 'E' | 55 'U' | 65 'e' | 75 'u' |
| 06 | 16 | 26 '&' | 36 '6' | 46 'F' | 56 'V' | 66 'f' | 76 'v' |
| 07'\a' | 17 | 27 ''' | 37 '7' | 47 'G' | 57 'W' | 67 'g' | 77 'w' |
| 08'\b' | 18 | 28 '(' | 38 '8' | 48 'H' | 58 'X' | 68 'h' | 78 'x' |
| 09'\t' | 19 | 29 ')' | 39 '9' | 49 'I' | 59 'Y' | 69 'i' | 79 'y' |
| 0a'\n' | 1a | 2a '*' | 3a ':' | 4a 'J' | 5a 'Z' | 6a 'j' | 7a 'z' |
| 0b'\v' | 1b | 2b '+' | 3b ';' | 4b 'K' | 5b '[' | 6b 'k' | 7b '{' |
| 0c'\f' | 1c | 2c ',' | 3c '<' | 4c 'L' | 5c'\\' | 6c 'l' | 7c '|' |
| 0d'\r' | 1d | 2d '-' | 3d '=' | 4d 'M' | 5d ']' | 6d 'm' | 7d '}' |
| 0e | 1e | 2e '.' | 3e '>' | 4e 'N' | 5e '^' | 6e 'n' | 7e '~' |
| 0f | 1f | 2f '/' | 3f '?' | 4f 'O' | 5f '_' | 6f 'o' | 7f |
+--------+--------+--------+--------+--------+--------+--------+--------+
MODIFIER
Je suis assez ok solution maintenant, je pense, d'éditer le code. À côté de la compréhension de la façon d'imprimer dans les colonnes j'ai aussi utilisé la fonction Martin bien fourni.
Vous devez vous connecter pour publier un commentaire.
Si le personnage est plus petit que 32 c'est un caractère spécial et donc ne peuvent pas avoir un vueable glyphe. Donc, si le personnage est en dessous de 32 vous devriez prendre cela en compte et de mettre approprié chaîne de caractères à sa place.
Les caractères avant de les 32 sont des caractères de contrôle. Par exemple, le code ascii 7 est la "cloche" de caractère, 13 est de retour à la ligne et ainsi de suite. Donc, vous devez savoir comment les imprimer.
Comme pour l'impression en colonne au lieu de lignes, voici un conseil: notez que la première ligne contient des caractères ascii de 0, 10, 20, ... 70; la seconde a 1, 11,...71. Vous devriez être en mesure de comprendre le motif et la note que vous avez besoin de deux boucles (une extérieure et une intérieure) où la boucle interne imprime les caractères qui appartiennent à la ligne donnée par la boucle externe.
Ces personnages n'ont pas un ASCII-représentation graphique standardisée, bien que certaines polices de caractère /-ensembles en fournir un. Sur de vieux systèmes DOS (et même plus Zilog Z-80 en fonction d'un), par exemple, vous pouvez "pousser" les valeurs dans la mémoire vidéo pour voir le associé caractères. De même, 128-256 eu des graphiques utilisés pour dessiner des lignes, des boîtes, ne ombrage etc. Mais, seulement ceux dont vous avez été en mesure d'imprimer sont vraiment significatif que des caractères ASCII. Si vous voulez vraiment l'affichage de plus, alors vous devez faire votre programme très couplé au système d'affichage qui il interagit avec - trouver certaines séquences d'échappement qu'il prend en charge pour l'affichage des caractères non standard, écrit, par le biais d'une API graphique, ou revenir à la "poke dans la mémoire" d'antan....
De rupture de la sortie dans les colonnes, vous pouvez ajouter une instruction dans la boucle pour voir si (i % num_columns == 0), puis d'écrire un caractère de saut de ligne '\0'. Si vous souhaitez les colonnes de sauter en valeur, l'utilisation i += 16 au lieu de i++, puis mettre "if (i > 0 x 70) { i -= 0x6F; std::cout << "\n";} " pour déplacer le début de la nouvelle ligne.
Vérifier la gnu ascii programme. Il fait la même chose.
Certains caractères ne sont pas destiné à être affiché ; par exemple, le 7e, si je me souviens bien, est la "cloche de ring", qui fait un bip sonore (à cause des machines à écrire, vous le savez, lorsque vous avez terminé votre ligne, il émet un bip).
Meilleur portable que je connaisse est de mettre une condition et non d'impression entre 0 et 31, ou stock dans un tableau classique les noms de ces personnages (BR, LF, etc., vous pouvez les trouver facilement sur le web) et l'affichage de ceux-ci au lieu d'essayer d'afficher le caractère lui-même, car ceux-ci sont, par définition, non-affichables.