Bon eh bien, je ne peux pas te donner de code en Vb, mais grosso modo, un script de conversion baseN en javascript, ça ressemble à ceci :
var alphanum="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//Impossible d'entrer des nombres négatifs, car ils sont formatté d'une manière différente selon la base...
//Au pire, transférer le "-" sur le nombre terminal.
//Nombre ENTIERS uniquement.
function baseN(nombre,base_initiale,base_finale)
{
//Important d'initialiser cette variable à 0.
var puissRel,nombre_deci=0,tampon="";
//On vérifie si la base initiale est correcte.
if(base_initiale<=1 || base_initiale>36)
{
alert("La base initiale doit être comprise entre 2 et 36.");
return -1;
}
//On vérifie si la base finale est correcte.
if(base_finale<=1 || base_initiale>36)
{
alert("La base finale doit être comprise entre 2 et 36.");
return -1;
}
//On vérifie si le nombre donné est bel et bien un nombre et qu'il ne contient pas de symbole étranges; il faut que les lettres soient majuscules par convention.
//HACK: On convertit nombre en chaîne de caractères en y ajoutant une chaîne vide, et ce afin de pouvoir mettre en majuscules un nombre, car l'argument a aussi bien pu être passé en string qu'en int.
nombre=""+nombre;
nombre=nombre.toUpperCase();
if(!estNombreValide(nombre,base_initiale))
{
alert("La chaîne entrée n'est pas un nombre de base "+base_initiale+" valide.");
return -1;
}
//On commence par vérifier s'il y a une conversion à faire; inutile de perdre de la précision pour rien.
if(base_initiale==base_finale)
return nombre;
//On vérifie si le nombre est zéro, car il est inutile de convertir...
if(nombre==0)
return 0;
//On converti d'abord en base décimale pour pouvoir utiliser les logarithmes.
if(base_initiale==10)
{
//Le nombre est déjà en base 10.
nombre_deci=nombre;
}
else
{
//On converti en base 10.
for(i=0;i<nombre.length;i++)
{
nombre_deci+=parseInt(alphanum.indexOf(nombre.substring(i,i+1)))*Math.pow(base_initiale,nombre.length-i-1);
}
}
//On convertit ensuite vers la base finale. Or, puisqu'on concatène de la gauche vers la droite, mais qu'on écrit les unitées à droite, il faut écrire le nombre à l'envers. Pour ce faire, il faut connaître sa longueur.
//Il faut recourir aux logarithmes. En l'occurence, à ln. Cela nous donne la puissance relative à affecter (position). Exemple : log(2)/log(2) = 1. Or 2 en binaire se note : 10. Effectivement, 1*10^1+0*10^0 = 10.
puissRel=Math.floor(Math.log(nombre_deci)/Math.log(base_finale));
for(i=puissRel;i>=0;i--)
{
//On enregistre le nombre désiré dans un tampon.
num=Math.floor(nombre_deci/Math.pow(base_finale,i));
nombre_deci-=num*Math.pow(base_finale,i);
tampon+=alphanum.substring(num,num+1);
}
return tampon;
}
//Cette fonction analyse la chaîne et vérifie si le caractère est un chiffre accepté dans la base spécifiée.
function estNombreValide(nombre,base)
{
for(i=0;i<nombre.length;i++)
{
caract=nombre.substring(i,i+1);
if(alphanum.indexOf(caract)==-1 || alphanum.indexOf(caract)>=base)
return false;
}
return true;
}
Ce code est long, mais il gère toutes les niaiseries les plus fréquentes et il est surcommenté, parce que tu n'es pas le premier à vouloir savoir comment faire. Et il y en a qui sont vraiment trop incompétents dans leur propre langage de programmation pour le comprendre... -_-'