Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONVERSION BASE 10 <====> BASE 256 (CODE ASCII)


Information sur la source

Catégorie :Maths Classé sous : conversion, base Niveau : Expert Date de création : 15/04/2001 Vu : 6 904

Note :
8,29 / 10 - par 7 personnes
8,29 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Ce code permet de convertir un nombre entier en chaîne de caractère.
L'intérêt est que cela fait gagner beaucoup de place (par exemple quand on écrit dans un fichier de sauvegarde DAT).
De même, on peut traduire une chaîne de caractère en un nombre en base10.
Toutes les limites de valeurs sont indiquées dans les lignes de commentaires. D'ailleurs, n'hésitez pas à les supprimer : elles prennent la moitié du code.
 

Source

  • Sub Conversion256(Base10)
  • On Error Resume Next 'Evite les erreurs de dépassement de capacités
  • 'Valeur maximum pour Base10 = 9223372036854775
  • 'Initialisation des valeurs
  • Puissance256 = 0
  • Base256 = ""
  • 'Calcul de la puissance en base 256 du nombre en base 10
  • CP1 = Base10
  • While (CP1 / 256) >= 1
  • Puissance256 = Puissance256 + 1
  • CP1 = Int(CP1 / 256)
  • Wend
  • 'Ecriture de la chaîne caractère Base256
  • For a% = 0 To Puissance256
  • CP2 = Int(Base10 / 256 ^ (Puissance256 - z%))
  • Base256 = Base256 + Chr(CP2)
  • Base10 = Base10 - (CP2 * (256 ^ (Puissance256 - z%)))
  • Next a%
  • 'à la sortie de la fonction, on a le nombre désiré en base 256, soit en mode ASCII 256.
  • 'remarque: la plage de caractère va de 0 à 255 et non de 1 à 256.
  • Exit Sub
  • End Sub
  • 'exemple: codage de 64345 en base 256
  • '64345 = 251 * 256 ^ 1 + 89 * 256 ^ 0
  • 'Base256 = Chr(251) & Chr(89) = "ûY"
  • Sub Conversion10(Base256)
  • On Error Resume Next 'Evite les erreurs de dépassement de capacités
  • 'Valeur maximum pour Base256 = "ÿÿÿ" = Chr(127) & Chr(255) & Chr(255) & Chr(255)
  • 'Initialisation de Base10
  • Base10 = 0
  • 'Ecriture de la chaîne caractère Base10
  • For b% = 0 To Len(Base256) - 1
  • Base10 = Base10 + (Asc(Right(Base256, 1)) * 256 ^ b%)
  • Base256 = Left(Base256, Len(Base256) - 1)
  • Next b%
  • 'à la sortie, on a le nombre en base 10 tiré d'une chaîne de caractère
  • End Sub
  • 'exemple: décodage de "+7" en base 10
  • 'Base256 = Chr(43) & Chr(55) = "+7"
  • 'Base10 = 55 * 256 ^ 0 + 43 * 256 ^ 1 = 11063
Sub Conversion256(Base10)
    On Error Resume Next     'Evite les erreurs de dépassement de capacités
    'Valeur maximum pour Base10 = 9223372036854775
    'Initialisation des valeurs
    Puissance256 = 0
    Base256 = ""
    'Calcul de la puissance en base 256 du nombre en base 10
    CP1 = Base10
    While (CP1 / 256) >= 1
        Puissance256 = Puissance256 + 1
        CP1 = Int(CP1 / 256)
    Wend
    'Ecriture de la chaîne caractère Base256
    For a% = 0 To Puissance256
        CP2 = Int(Base10 / 256 ^ (Puissance256 - z%))
        Base256 = Base256 + Chr(CP2)
        Base10 = Base10 - (CP2 * (256 ^ (Puissance256 - z%)))
    Next a%
    'à la sortie de la fonction, on a le nombre désiré en base 256, soit en mode ASCII 256.
    'remarque: la plage de caractère va de 0 à 255 et non de 1 à 256.
    Exit Sub
End Sub

'exemple: codage de 64345 en base 256
'64345 = 251 * 256 ^ 1 + 89 * 256 ^ 0
'Base256 = Chr(251) & Chr(89) = "ûY"



Sub Conversion10(Base256)
    On Error Resume Next     'Evite les erreurs de dépassement de capacités
    'Valeur maximum pour Base256 = "ÿÿÿ" = Chr(127) & Chr(255) & Chr(255) & Chr(255)
    'Initialisation de Base10
    Base10 = 0
    'Ecriture de la chaîne caractère Base10
    For b% = 0 To Len(Base256) - 1
        Base10 = Base10 + (Asc(Right(Base256, 1)) * 256 ^ b%)
        Base256 = Left(Base256, Len(Base256) - 1)
    Next b%
    'à la sortie, on a le nombre en base 10 tiré d'une chaîne de caractère
End Sub

'exemple: décodage de "+7" en base 10
'Base256 = Chr(43) & Chr(55) = "+7"
'Base10 = 55 * 256 ^ 0 + 43 * 256 ^ 1 = 11063
 

Conclusion

Au cas où ce code comporterait des bugs, n'hésitez pas à me le signaler.
 

Commentaires et avis

signaler à un administrateur
Commentaire de ceyquem le 04/03/2002 19:58:20

il est vrai qu'il est simple. de plus les on error resume next ne sont pas très propres. il vaudrait mieux prévoir une routine qui informe l'utilisateur de l'erreur.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

conversion qbasic en VB6 [ par Jeanlouis ] Bonjour,J'aimerai savoir comment convertir ce programme qbasic en vb6?ClsPrint " choisir le programme de conversion qui vous convient"Print " ----- conversion dossier en fichier, ou autre solution ?? [ par ralf19b3 ] voila je suis actuellement en train de creer une base de donne et je souhaiterait y integrer une fonction de restauration de ma base, ce qui voudrer d conversion Base Access vers VB ????? [ par stoomm ] Quelqu'un connait un bon logiciel pour convertir une base ACCESS ou au moins les formulaires et les modules vers VBMerci. A+.Stoomm [Access 2.0]Conversion [ par fada09 ] Salut,J'ai un ENOOORME problème.J'ai réalisé une base de données sous Access2000 et le problème est que l'enterprise ne possède que Access 2.0 sur les conversion d'un réel inférieur à 1 en base 2 [ par spizzou ] " Une source &#233;met&nbsp;&nbsp; n&nbsp; &nbsp;symboles S1, S2, ... , Sn avec les probabilit&#233;es respectives P1, P2, ... , Pn class&#233;es dans conversion access03-->97 ?? [ par antoine_ferard ] Serait-il possible, via le code, de convertir une base Access2003 vers une base Access97 ? Code Fusion sur une lettre Word [ par Mme Pierrette ] Bonjour, étant donné que la base de données de nos clients est sur Oracle, le service à la clientèle voudrait que leur correspondance se fasse par Ora transport [ par bardan2007 ] bonsoir a tous ,je suis vraiment noveau sur ce domaine, mais je cherche un  programme en vb avec une base access qui traite un projet de transport ( b debut fin d'un base Access [ par Dounej ] BonjourComment se positionner au début ou à la fin d'une base Access ?MoveLast et MoveFirst ne fonctionne pas ?<b Mise a jour base de donnée [ par Mickaelkael007 ] Bonjour, j'utilise VB 2005 et je souhaite piocher des informations dans une base de données de type Access, les modifier puis mettre la base de donnée


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.