Résultats de 1 à 8 sur 8

Sujet : conversion chaine de caractere

  1. #1

    conversion chaine de caractere

    Bonjour a tous,
    j aimerai savoir comment on fait pour convertir une chaine de caractere numerique (\"12.11234697\&quot en nombre 12.11234697. pouvez vous me donner les etapes de votre resonnement svp.
    Un grand merci

  2. #2
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Tu part du chiffre asccii le plus à droite.
    Tu le met dans un entier de plusieurs octets
    Tu soustrait la valeur ASCII du zéro (48)
    Ainsi tu obtient un chiffre de 0 à 9 binaire.
    Tu le place dans la zone binaire réception, de 8 octets par exemple.
    Attention dans un nombre binaire en mémoire les octets sont rangés dans l\'ordre inverse de ton nombre en ASCII (l\'octet de poids faible est le plus à gauche et l\'octet le plus à droite contient le signe (mis en complément à 2).
    Tu met le premier chiffre tel quel.
    Pour le second chiffre tu le multiplie par 10 et tu l\'ajoute au précédent en reportant les retenues successives sur l\' octet binaire plus à droite,
    Puis le 3ème tu le multiplie par 100 que tu additionne au binaire précédent et en reportant toujours les retenues... etc jusqu\'à n\'avoir plus de chiffre ASCII décimaux à traiter.
    Si tu as besoin d\'explication plus détaillées n\'hésite pas.

    Pour tester il suffit de créer une autre procédure qui fait le travail inverse. Pour cela on effectue des divisions successives par 10 en tenant compte des retenues et on convertit le reste de la division en ASCII en ajoutant 48

    Bonne continuation
    Moby
    moby

  3. #3
    tout d abord merci de m avoir repondu. ca m aide un mais pas encore assez. en fait c est la partie decimal qui me pose un petit probleme.
    par example: la chaine \"123,12464\".
    je sais que pour la partie entiere(\"123\&quot, je dois prend la chaine
    \"1\"-\"0\"=1,mul par 100
    \"2\"-\"0\"=2, mul par 10
    \"3\"-\"0\"=3, mul par rien
    puis je fais la somme de tout ca ca donne 123.
    est ce que pour la partie decimal (0,12464)c est le mm principe que la partie entiere cad on divise par un multiple de 10 au lieu de multiplier?
    et a la fin comment je dois assembler la partie entiere et la partie decimale pour en faire qu un nombre(123,12464)? je dois faire une somme?
    merci d avance pour votre aide

  4. #4
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Excuse moi, mais je n\'avais pas vu qu\'il s\'agissait d\'un nombre réel.
    Dans ce cas, je t\'invite à télécharger le tut que j\'ai fait µDICO>MASM>Flottant

    La solution la plus facile (mais pas la plus performante) consiste:
    garder en mémoire le nombre de chiffres aprés la virgule et la supprimer. ici il faut conserver 5, c\'est à dire que à la fin du calcul il faudra diviser le résultat par 10**5.
    Tu suit alors le même algorithme que pour les entiers, mais en utilisant les instructions flottantes, ce qui est plus facile car tu n\'a pas besoin de gérer la zone réception en binaire, puisque c\'est la FPU qui gère.
    Et après avoir traité tous les chiffres tu divise le résultat par 100 000. Le nombre flottant obtenu est à ton choix sur 4, 8 ou 10 octets que tu envoies en mémoire.

    Pour l\'opération inverse il y a des instructions flottantes qui donnent la partie entière des divisions successives...C\'est basé sur le même principe

    Moby
    moby

  5. #5
    Un grand merci a toi Moby

  6. #6
    Visiteur MP
    Visiteur MP
    :lol: :x: :idea: :P: :!: :cry: :8O: : ops: :wink: :arrow:

  7. #7
    Visiteur MP
    Visiteur MP
    fjhjh

  8. #8
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Oui?
    moby

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé