begin process at 2010 02 10 05:37:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > CONVERSION DE NOMBRES EN BASE X

CONVERSION DE NOMBRES EN BASE X


 Information sur la source

Note :
8,09 / 10 - par 11 personnes
8,09 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Classé sous :conversion, binaire, decimal, hexadecimal, base Niveau :Expert Date de création :10/01/2000 Vu :11 768

Auteur : FlyKiller

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Avec VB, il est possible de convertir un nombre décimal (base 10) en hexadécimal (base 16): mais il n'est ni possible de faire le contraire, ni de faire d'autre types de conversions. Cette fonction permet de convertir un chiffre d'une base X vers une Base Y: la base pouvant aller du bianire à la base 32 (pour avoir une base plus grande, il faut rajouter des signes dans le dictionnaire).

Source

  • Private Const DICTIONNARY = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  • ' Aucune validation n'est faite, ce qui signifie qu'on considère que:
  • ' - Le paramètre Number contient tous des signes valides appartenant au
  • ' dictionnaire.
  • ' - Les chiffres FromBase et ToBase appartiennent à ]0:Len(Dictionnary)]
  • Public Function BaseX(ByVal Number As String, ByVal FromBase As Integer, ByVal ToBase As Integer) As String
  • Dim Number10 As Long ' --- Nombre en base 10 ---------------------------------
  • Dim Power As Integer ' --- Puissance -----------------------------------------
  • Dim Idx As Integer ' --- Index ---------------------------------------------
  • Dim Sign As Integer ' --- Chiffre traité ------------------------------------
  • ' --- Convertir en base 10 -------------------------------------------------
  • If FromBase <> 10 Then
  • Power = Len(Number) - 1
  • For Idx = 1 To Len(Number)
  • Sign = InStr(DICTIONNARY, Mid$(Number, Idx, 1)) - 1
  • Number10 = Number10 + (Sign * FromBase ^ Power)
  • Power = Power - 1
  • Next
  • Else
  • Number10 = Number
  • End If
  • ' --- Convertir en base X --------------------------------------------------
  • If ToBase <> 0 Then
  • Power = 0
  • While Number10 > 0
  • Sign = Number10 Mod ToBase
  • BaseX = Mid$(DICTIONNARY, Sign + 1, 1) & BaseX
  • Number10 = (Number10 - Sign) / ToBase
  • Wend
  • Else
  • BaseX = Number10
  • End If
  • End Function
Private Const DICTIONNARY = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

' Aucune validation n'est faite, ce qui signifie qu'on considère que:
' - Le paramètre Number contient tous des signes valides appartenant au
'   dictionnaire.
' - Les chiffres FromBase et ToBase appartiennent à ]0:Len(Dictionnary)]
Public Function BaseX(ByVal Number As String, ByVal FromBase As Integer, ByVal ToBase As Integer) As String
Dim Number10 As Long ' --- Nombre en base 10 ---------------------------------
Dim Power As Integer ' --- Puissance -----------------------------------------
Dim Idx As Integer   ' --- Index ---------------------------------------------
Dim Sign As Integer  ' --- Chiffre traité ------------------------------------

  ' --- Convertir en base 10 -------------------------------------------------
  If FromBase <> 10 Then
    Power = Len(Number) - 1
    For Idx = 1 To Len(Number)
      Sign = InStr(DICTIONNARY, Mid$(Number, Idx, 1)) - 1
      Number10 = Number10 + (Sign * FromBase ^ Power)
      Power = Power - 1
    Next
  Else
    Number10 = Number
  End If

  ' --- Convertir en base X --------------------------------------------------
  If ToBase <> 0 Then
    Power = 0
    While Number10 > 0
      Sign = Number10 Mod ToBase
      BaseX = Mid$(DICTIONNARY, Sign + 1, 1) & BaseX
      Number10 = (Number10 - Sign) / ToBase
    Wend
  Else
    BaseX = Number10
  End If
End Function

 Conclusion

Vous pourrez, entre autres, utiliser cette fonction pour les conversions courantes:
- Base2 <-> Base10
- Base2 <-> Base16
- Base10 <-> Base 16
- ...


 Sources du même auteur

Source avec Zip FWDP: USER-DEFINED PROPERTIES
Source avec Zip CATALOGUER UN DISQUE: FILESYSTEMOBJECT VS. FONCTION API
Source avec Zip AUDITEZ VOS DONNÉES SUR SQL SERVER
Source avec Zip FICHIERS RESOURCE EXTERNES
Source avec Zip REGOCX: UN REGSVR32 EN VISUAL BASIC

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) PISH2010-VB2008 par SaintMaur
Source avec Zip Source avec une capture PI-SH-2010-VB6 par SaintMaur
ET... PI... par us_30
Source avec Zip Source avec une capture CHIFFRAGE ET DECHIFFRAGE FONCTION AFFINE par tresorsdevie
NB PREMIER : TEST DE FERMAT ET DE MILLER-RABIN par us_30

 Sources en rapport avec celle ci

Source avec Zip CLASSE DE CONVERSION INTER-BASES (BASE 2-36 VERS BASE 2-36) par violent_ken
Source avec Zip Source avec une capture Source .NET (Dotnet) CONVERTISSEUR UNIVERSEL EN BASES MULTIPLES par chewbaka62
Source avec Zip Source avec une capture Source .NET (Dotnet) CONVERSION DE BASE2 BASE10 BASE16 par alfr3d
Source avec Zip CONVERSION EN DECIMAL, HEXADECIMAL & BINAIRE par Pyros
CONVERTIR UN NOMBRE DECIMAL (BASE 10) EN BASE X par Mr X

Commentaires et avis

Commentaire de maxkweeger le 24/08/2002 11:43:24

c'est trop fort !!!
TRES BIEN !

Commentaire de multipac le 27/09/2004 11:02:08

Très belle fonction.
Merci

Multipac

Commentaire de deneus le 26/05/2005 13:55:37

trop bon :)

par contre on peut optimiser en laissant le DICO et on modifie la ligne qui s en sert part :


BaseX  = Number Mod ToBase & BaseX

Commentaire de vautour32 le 29/09/2007 10:11:47 10/10

C'est vraiment génial!!!
Chapeau.
En tout cas, ça m'est très utile.
Merci beaucoup.
Vautour32

Commentaire de moutonjr le 23/12/2007 15:58:01

Bien joué!

Commentaire de zosos le 13/01/2008 22:55:11 8/10

génial...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Aide SVP... conversion de decimal à binaire [ par jjs ] J'arrive pas à trouver la fonction qui me transforme des décimaux en binaires, en excel elle existe sous le nom decbin, est ce qu'il existe une foncti Conversion hexadecimal-decimal [ par zarf ] J'aimerais savoir si il existe une fonction inverse à la fonction Hex(). Si non, qu'elle serait la méthode. Merci. conversion decimal binaire [ par emma16 ] quelqu'un connaitrai t il un petit programme (simple qui convertisse un d&#233;cimal egal ou sup&#233;rieur &#224; 15 en binaire (donc sur 4 bits) me Conversion decimal -> binaire ? [ par Jacky7 ] Bonjour à tous,Je voudrais convertir une valeur décimal en binaire, existe t-il une fonction dans VB6  permettant de réaliser cette conversion simplem conversion decimal -> hexadecimal [ par calimeria ] bonjour à tousvoilà j'ai lu plein de choses sur cette conversionnotamment que la fonction Hex() permettait de le faireseulement avec vb6 quand je fais Conversion Hexadecimal ===> RVB [ par alexx860 ] Bonjour,je cherche a faire une conversion d'une couleur hexadecimale en couleur R V B.ex : FF0000 me donnera 255 0 0Merci d'avance :)alexx860 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 Decimal Hexa... Bizarreries ! [ par santiago69 ] Bonjour a tous,Voila, je constate un comportement etrange de VB lors de la conversion de decimal vers hexadecimal.Exemples :Debug.Print Hex(32767)   = Binaire decimal sous plat forme VB exel [ par kannaman ] bonjours à tous,je suis débutant en visual basic est après un cours quelque peu rapide il se trouve que l'on doit "programmer" un convertisseur binair Insertion et Suppression de clé binaire dans la base de registre [ par dlpxlid ] Quelqu'un peut-il me dire comment insérer et retire une clé binaire dans la base de registre ?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales