Conversion en Base 36

cs_fhalckon Messages postés 3 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 17 janvier 2005 - 17 janv. 2005 à 13:51
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 20 août 2005 à 11:16
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
17 janv. 2005 à 14:44
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]~
0
cs_fhalckon Messages postés 3 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 17 janvier 2005
17 janv. 2005 à 15:35
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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 août 2005 à 11:16
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
0
Rejoignez-nous