Je pense que lafonction Convert.toInt32 prend des nombres écrits en base exotique, et les convertit en entier. Toi, ce dont tu as besoin, c'est la fonction inverse, une fonction qui prend un entier, et qui renvoie sa représentation dans une base. La représentation voulue, c'est une suite de chiffres, ou même, une suite de symboles. On peut donc le stocker comme une chaîne de caractères, ou comme un tableau d'entiers, mais pas comme un entier.
Voici en gros une fonction qui va renvoyer une chaîne de 10 caractères , pour convertir un nombre en base 3, ou en base n presque quelconque..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
function convert_base_v1(n,b )
// n est un entier
// b est un entier, entre 0 et 16
// valeur renvoyée = une chaine de caractères, qui représente n en base b
// Exemple : convert_base_v1( 33, 3) renvoie "1020"
ch est une chaine = "0123456789ABCDEF"
i, r est un entier
i = n
tantque i > 0
r = i%b // ou r = mod( i, b) selon les langages ... reste de la division de i par b
ch = milieu( ch, r, 1) + ch
i = ( i - r) / b
fin
ch = complete_a_gauche ( ch, 10 , "0") // On veut une chaîne de 10 caractères, on complète à gauche par des 0 si nécessaire ...
renvoyer ch |
Ou encore une fonction très similaire, pour renvoyer un Tableau de 10 entiers au lieu d'une chaîne de 10 caractères.
C'est probablement mieux de travailler avec des tableaux d'entiers, plutôt qu'introduire des chaines de caractères.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
function convert_base_v2(n,b )
// n est un entier
// b est un entier, entre 0 et 16
// valeur renvoyée = un tableau de 10 entiers, qui représente n en base b
// Exemple : convert_base_v2( 33, 3) renvoie (1, 0,2, 0)
tb est un tableau de 10 entiers
i, r, k, est un entier
i = n
k = 9
tantque i > 0
r = i%b // ou r = mod( i, b) selon les langages ... reste de la division de i par b
tb[k] = r
k--
i = ( i - r) / b
fin
renvoyer tb |
Partager