Soyez le premier à donner votre avis sur cette source.
Snippet vu 10 848 fois - Téléchargée 28 fois
function DecToHex(n){ var tblCode = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"); var BASE=16; 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; } function DecToOct(n){ var tblCode = new Array("0", "1", "2", "3", "4", "5", "6", "7"); var BASE=8; 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; }
cependant j'ai un petit probleme:
J'ai modifer le script pour en faire une transformation de base 36
le probleme lorsque je convertit 7200585 en base 36, il me note 4ac9 aulien de 4ac09
Pourrais tu voir si j'ai fait une erreur
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;
}
Merci d'avance
merci à tlg71 de signaler une erreur dans DecBase
et bien sûr aucun test n'est fait sur l'entrée des données
donc FF ( en décimal ) provoque une erreur
ce n'est pas le but de ces fonctions.
il faut faire les contrôles avant l'appel,
mais le sujet n'était pas là.
correction :
il faut faire while (v>=bas) et non pas while (v>base)
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function DecBase(dec,bas) {
/////////////////////////////////////
//////// Décimal => base ////////
////////////////////////////////////
var h="",l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
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; }
function appel()
{ var r=DecBase(parseFloat(dec.value),parseFloat(bas.value));
alert(r); }
</script>
</HEAD>
décimal :
base :
</HTML>
function DecToBase(n, ba){
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=ba;
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%(Math.pow(BASE, i-1))==0) strHex+="0";
Num = (Num % Math.pow(BASE, i-1));
}
return strHex;
}
else return 0;
}
As-tu essayé de convertir le nombre décimal 16 en Hexa ?
resultat="G"
As-tu essayé de convertir le nombre 9 en base 8?
resultat=9. MAIS 9 n'est pas un nombre Octal!
tout comme FF en décimal te donne 165, FF n'est pas un nombre décimal!
a+ et bon courage pour le dbug
base ( 36 de 0 à Z ) => décimal
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function BaseDec(valeur,bas) {
/////////////////////////////////
//////// base => Décimal ////////
/////////////////////////////////
var d=0,l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var p,v1,v2;
for (var n=valeur.length-1;n>=0;n--)
{ p=valeur.length-1-n;
v1=valeur.charAt(n);
v2=l.indexOf(v1);
d=d+(v2*Math.pow(bas,p)); }
return d; }
// exemple d'utilisation
function appel()
{ var r=BaseDec(val.value,parseFloat(bas.value));
alert(r); }
</script>
</HEAD>
valeur :
base :
</HTML>
il y a aussi peut-être des erreurs. pas réellement testé
avec DEcBase et BaseDec vous avez tout pour
convertir nimporte quoi en nimporte quelle base
( ou presque ) ou pas ?
tu finis la mise au point LocalStone ?
a+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.