cs_fhalckon
Messages postés3Date d'inscriptionmercredi 27 août 2003StatutMembreDernière intervention17 janvier 2005 17 janv. 2005 à 14:22
merci Tleg71 ce script m'a bien depanner :p
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
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 13 févr. 2004 à 08:49
j'avais bien dis que tout n'était pas testé
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>
tleg71
Messages postés3Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention12 février 2004 12 févr. 2004 à 18:54
je te propose le code suivant....
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;
}
tleg71
Messages postés3Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention12 février 2004 12 févr. 2004 à 18:36
C'est un bon début mais ces codes DecBase et BaseDec ne marchent pas beaucoup:
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
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 févr. 2004 à 11:42
la suite ?
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+
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 févr. 2004 à 10:43
voila déjà un début.
convertir décimal => base ( 36 maxi de 0 à Z )
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function DecBase(dec,bas) {
////////////////////////////////////
//////// Décimal => base ////////
////////////////////////////////////
var h="",l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// modifier l="01...YZ" pour augmenter bases possibles
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; }
// exemple d'utilisation
function appel()
{ var r=DecBase(parseFloat(dec.value),parseFloat(bas.value));
alert(r); }
</script>
</HEAD>
décimal :
base :
</HTML>
il y peut-être des erreurs, pas réellement testé
a+
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 févr. 2004 à 09:58
comment fait-on "en math"
pour changer de base ?
par exemple chiffre en octal
à transformer en héxa-décimal ?
a+
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 12 févr. 2004 à 09:57
comment fait-on "en math"
pour changer de base ?
par exemple chiffre en octal
à transformer en héxa-décimal ?
a+
LocalStone
Messages postés514Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention 1 mars 2009 11 févr. 2004 à 14:30
Bultez, je suis d'accord avec toi, et même si ce type de fonction doit bien exister quelque part, je te propose que l'on essaye de mettre ça au point.
LS.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 11 févr. 2004 à 10:31
ce serait bien de faire une seule fonction
qui convertisse nimporte quoi vers nimporte quelle base
valeur retour=convertir(valeur départ,base départ,base retour);
cordialement.
17 janv. 2005 à 14:22
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
13 févr. 2004 à 08:49
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>
12 févr. 2004 à 18:54
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;
}
12 févr. 2004 à 18:36
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
12 févr. 2004 à 11:42
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+
12 févr. 2004 à 10:43
convertir décimal => base ( 36 maxi de 0 à Z )
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function DecBase(dec,bas) {
////////////////////////////////////
//////// Décimal => base ////////
////////////////////////////////////
var h="",l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
// modifier l="01...YZ" pour augmenter bases possibles
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; }
// exemple d'utilisation
function appel()
{ var r=DecBase(parseFloat(dec.value),parseFloat(bas.value));
alert(r); }
</script>
</HEAD>
décimal :
base :
</HTML>
il y peut-être des erreurs, pas réellement testé
a+
12 févr. 2004 à 09:58
pour changer de base ?
par exemple chiffre en octal
à transformer en héxa-décimal ?
a+
12 févr. 2004 à 09:57
pour changer de base ?
par exemple chiffre en octal
à transformer en héxa-décimal ?
a+
11 févr. 2004 à 14:30
LS.
11 févr. 2004 à 10:31
qui convertisse nimporte quoi vers nimporte quelle base
valeur retour=convertir(valeur départ,base départ,base retour);
cordialement.