Conversion en Base 36

Signaler
Messages postés
3
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
17 janvier 2005
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
J'ai juste un petit bug lorsque la conversion donne 0, le 0 ne s'indique pas
C'est un script que j'ai copier ici (decimal to hexa) que j'ai légerement modifier.
Une idée ?

<script language="JavaScript">
function DecTo36(n)
{
var tblCode = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
var BASE=36;
var Num = parseInt(n, 10);
var i;
var strHex = "";



if (! isNaN(Num)){
while (Num>0){
i=0;
while(Num/Math.pow(BASE, i++)>=BASE);
strHex += tblCode[Math.floor(Num/Math.pow(BASE, i-1))];
if (Num%BASE==0) strHex+="0";
Num = (Num % Math.pow(BASE, i-1));
}
return strHex;
}
else return 0;
}

3 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
j'avais ça comme ça :

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function DecBas(dec,bas) //~~ Décimal => Base ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{var h="",l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",r;
var v=dec;
while (v>=bas)
{ q=Math.floor(v/bas);
r=v-(bas*q);
h=l.charAt(r)+h;
v=q; }
h=l.charAt(v)+h;
return h; }

dans http://www.javascriptfr.com/code.aspx?id=20649
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
Messages postés
3
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
17 janvier 2005

Ayé j'ai trouve via // Created 1997 by Brian Risk. http://members.aol.com/brianrisk

function DecTo36 (number) {
var list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var dec = 0;
for (var i = 0; i <= number.length; i++) {
dec += (list.indexOf(number.charAt(i))) * (Math.pow(10 , (number.length - i - 1)));
}
number = "";
var magnitude = Math.floor((Math.log(dec))/(Math.log(36)));
for (var i = magnitude; i >= 0; i--) {
var amount = Math.floor(dec/Math.pow(36,i));
number = number + list.charAt(amount);
dec -= amount*(Math.pow(36,i));
}
return number;
}

Merci Brian :p
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
29
Bonjour, j'ai une autre solution beaucoup plus interessante, donc je vais la faire partager :)

var n = new Number(2392);
alert(n.toString(36));

à partir de la il est facile de convertir d'une base decimal à une base n < 36 :)

<hr> Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr