IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

recuperer le code ascii, manipuler des nombres binaires


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 56
    Points : 36
    Points
    36
    Par défaut recuperer le code ascii, manipuler des nombres binaires
    Bonjour,

    pour m'entrainer à manipuler les chaines de caractère, je voudrais faire un petit programme (tout à fait inutile) :
    1. qui prend en argument un message (un texte quelconque ne comprenant que des lettres et des espaces. On verra la ponctuation plus tard)
    2. qui prend chaque lettre du message, et lui attribue un code en binaire :
    a --> 00001
    b --> 00010
    c --> 00011
    etc.
    3. qui me réécrit tout ça en séparant les lettres par des ':' et les mots par des espaces. Par exemple "abc ab" devient "00001:00010:00011 00001:00010".

    Je pourrais faire une sorte de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    si (caractere=a)
    alors codeCaractere = 00001
     
    si (caractere=b)
    alors codeCaractere = 00010
     
    etc.
    Mais c'est un peu bourrin, et le but c'est de manipuler des trucs que je connais pas encore.

    Du coup je voudrais récupérer le code ascii de chaque caractère, en binaire, et par une soustraction, me ramener au code binaire que je veux.

    Sinon, travailler en décimal puis convertir en binaire.


    Mes questions :
    1. comment récupérer ce code ascii ? parce que je peux faire par exemple un printf ("%d" , caractere) mais ça va juste me l'afficher, je vais pas pouvoir travailler dessus...
    2. si je travaille avec le code ascii en binaire, est-ce que je peux utiliser les opérations classiques (addition soustraction), ou bien y a-t-il des fonctions spécifiques ?
    2. si je travaille en décimal, comment convertir ensuite mon nombre en binaire ?


    Voila j'espère avoir été clair, et que mes questions ne relèvent pas de l'idiotie complète. Merci de vos réponses

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 043
    Points
    31 043
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par silma Voir le message
    1. comment récupérer ce code ascii ? parce que je peux faire par exemple un printf ("%d" , caractere) mais ça va juste me l'afficher, je vais pas pouvoir travailler dessus...
    Ben si !!! Si tu affiches la valeur de 'a' au format %d et que ça t'affiche 97, ça veut bien dire que 'a' se code 97 donc tu peux travailler sur cette valeur. Ainsi, si tu affiches 'a' + 1 au format "%c" tu obtiendras 'b'...

    Citation Envoyé par silma Voir le message
    2. si je travaille avec le code ascii en binaire, est-ce que je peux utiliser les opérations classiques (addition soustraction), ou bien y a-t-il des fonctions spécifiques ?
    Le binaire n'est qu'une base. Et tout nombre mathématique, quel que soit la base dans laquelle il est écrit, peut subir une opération. Exemple 34 + 1 en base 5 donne
    4 + 1 = 0, reste 1
    3 + 1 = 4
    Ce qui donne alors 40.

    Vérification en décimal: 34 = 3x5 + 4 = 19
    19 + 1 font 20
    Et 20 en décimal s'écrit 40 en base 5...

    Citation Envoyé par silma Voir le message
    2. si je travaille en décimal, comment convertir ensuite mon nombre en binaire ?
    Là c'est plus difficile. Théoriquement il te faut diviser par 2 et ne garder que le reste. Exemple pour 97
    97 / 2 = 48 reste 1
    48 / 2 = 24 reste 0
    24 / 2 = 12 reste 0
    12 / 2 = 6 reste 0
    6 / 2 = 3 reste 0
    3 / 2 = 1 reste 1
    1 / 2 = 0 reste 1
    Une fois que tu atteints 0 au résultat, tu remontes tous les restes en partant du dernier ce qui donne 110 0001

    Maintenant, tu as une possibilité plus rapide en passant par l'hexa. Comme 2^4 = 16, il te suffit d'utiliser cette propriété mathématique et convertir chaque nombre hexa en binaire en codant le nombre sur 4 digits. Exemple pour 97 qui s'écrit 61 en hexa
    6 se code en binaire 0110
    1 se code en binaire 0001
    Et donc 61 hexa (qui reste 97 décimal ou 'a' format caractère) se code 0110 0001...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 56
    Points : 36
    Points
    36
    Par défaut
    Merci pour tes réponses ! J'ai tout pigé, sauf un détail (du chipotage je dirais) : qu'entends-tu par "le binaire n'est pas une base" ? Pour moi un nombre écrit en binaire ou en base 2 c'est la même chose...

    Je ne donnerai plus de nouvelle avant la semaine prochaine par contre (ski oblige )

    Bonnes vacances !

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 043
    Points
    31 043
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par silma Voir le message
    qu'entends-tu par "le binaire n'est pas une base" ?
    Ce n'est pas ce que j'ai écrit !!!

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/05/2008, 20h08
  2. Comment manipuler des fichiers binaires ?
    Par yrejk dans le forum C++
    Réponses: 1
    Dernier message: 15/04/2008, 19h40
  3. Manipuler des fichiers binaires en csharp
    Par olibara dans le forum C#
    Réponses: 5
    Dernier message: 04/04/2008, 14h07
  4. Manipuler des nombres en notation scientifique
    Par enrikomic dans le forum Mathématiques - Sciences
    Réponses: 6
    Dernier message: 11/07/2007, 13h14
  5. Réponses: 1
    Dernier message: 17/03/2006, 22h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo