Comment faire pour convertir en minuscules caractères ASCII dans le fichier en majuscules à l'aide d'un masque de bits (pas de -32 permis)?
Je ne demande pas de résoudre mes devoirs, seulement quelques pistes.
Grâce
OriginalL'auteur Flavius | 2010-11-02
Comme vous l'état "(n ° -32 autorisé)", je suppose que vous savez que la différence entre minuscules et majuscules est de 32. Maintenant convertir 32 à sa représentation binaire, il n'y a qu'un ensemble de bits. Après cela, le travail un moyen d'utiliser un masque de bits pour passer le morceau.
En effet, même si bien sûr, les gens ne donner la réponse directe ci-dessous ;o les. Je crois qu'il devrait être noté, pour les lecteurs, que l'OP n'indiquent que des caractères ASCII. Ainsi, cette méthode, ou tout présenté sur cette page, ne serait pas nécessairement toujours valable pour les non-anglais Unicode (16 bits/large-char) caractères. Je voulais juste apporter cette précision. Il serait de travailler pour l'anglais, mais je ne sais pas sur les autres langues. Par conséquent, soyez prudent, et n'oubliez pas tous les humains parlent anglais et notre Traducteur Universel n'est pas encore inventé ;p. Le CRT toupper et tolower fonctions doivent être utilisées pour les caractères.
OriginalL'auteur schnaader
Penser à la différence entre minuscules et en majuscules (0x20), puis appliquer le masque approprié à votre valeur
XOR à descendre de plus en plus de la haute ou de la partie supérieure de la baisse des
.... corrigés ....
Encore une fois, si vous allez courir autour de bon gré mal gré vers le bas à droit de vote des réponses, veuillez expliquer pourquoi.
OriginalL'auteur KevinDTimm
Pour le code, vous devriez être en fonctions de la bibliothèque, comme toupper() ou towupper(), ou quelque chose capable de gérer la complexité de l'Unicode.
Ainsi, de nombreux problèmes pratiques limité à l'ASCII. En agitant votre canne et dire quelque chose de semblable à "vous merde, les enfants pourront mettre les yeux d'une personne avec qui ASCII" n'est pas vraiment utile.
OriginalL'auteur wnoise
Vient de traduire
+-32
dans un peu de l'opération.32
peut être écrite comme2^x
.OriginalL'auteur Let_Me_Be
Cet exemple suppose que la chaîne est en ASCII, et à l'aide de l'alphabet anglais.
C'est C99 le code en C, vous devez utiliser le bon compilateur drapeau pour définir ce que lors de la compilation. J'ai volontairement essayé de ne pas utiliser toutes les libs dans cet exemple, la norme ou pas parce que je devine que vous êtes encore dans le processus de l'apprentissage des bases de la programmation en C.
Il profite du fait que la SEULE différence entre un supérieur et un inférieur cas de caractères de la table ASCII, est un peu unique. Plus précisément le 6 bits (à partir de la droite.) Tout ce que nous avons à faire est de créer un "masque" qui contient toutes les 1 sauf pour les 6 bits (à partir de la droite) et ensuite utiliser le binaire ET de l'instruction (&) pour appliquer ce masque à notre personnage. Et puis, bien sûr, mettre dans notre chaîne.
Voici un exemple python.
À mon avis, c'est le meilleur moyen pour faire une chaîne de caractères ASCII (ou un caractère ASCII) en majuscule dans c. À moins, bien sûr, vous voulez quelque chose qui sera de retour une nouvelle chaîne, je.e vous souhaitez créer une majuscule version de "l'ancien" de la chaîne, mais encore être en mesure de conserver la version originale quelque part. Cela ne devrait pas être trop difficile à faire, si vous comprenez mon premier exemple. Vous avez juste à allouer un nouveau tableau pour mettre les majuscules chaîne, et retourne un pointeur sur ce tableau (unsigned char*).
OriginalL'auteur asdfghikku
Comparer les valeurs hexadécimales de minuscules caractères ASCII majuscules des caractères ASCII et que la solution doit devenir clair. Il peut également être utile de comparer les valeurs binaires si la solution n'est pas évident tout de suite.
OriginalL'auteur semaj
L'opération de soustraction d'un 32 du code ASCII d'une lettre latine petite bascule de la 5e bits de 1 à 0.
Vous avez raison, dans l'ensemble des petites lettres latines de la 5ème bit est toujours à la une. désolé, mais j'ai emporté par la langue internationale de l'expérience. C'est encore plus simple alors.
OriginalL'auteur Seva Alekseyev
Comme vous le préciser, votre travail n'est pas bien défini. Le C standard ne sait rien au sujet d'un particulier de codage de la source ou de l'exécution d'un jeu de caractères, en particulier, ne présumez pas quelque chose qui se rapproche de l'ASCII.
Donc wnoise a droite, le seulement standard façon de traiter avec ces choses sont les fonctions prédéfinies et les macros qui sont prévues pour un tel effet.
D'accord, étant donné qu'il a défini ASCII dans le sujet, il s'est excusé 😉
OriginalL'auteur Jens Gustedt
essayer et avec 0xDF (hex) ou 011011111 binaire
OriginalL'auteur Steed