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
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
31
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