Changement de base

Contenu du snippet

Convertir un nombre d'une base vers une autre.
copier/coller vers CB.hta ( par exemple )

Source / Exemple :


<HTML>
<HEAD>
<!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
<!                                >
<TITLE> Changement de Base </TITLE>
<!                                >
<!          Février 2004          >
<!   © Marcel.Bultez@Tiscali.fr   >
<!                                >
<!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
<style type="text/css"> 
.fnt {	font-family=Arial;
		font-size=11px;
		font-weight=bold; }
</style>
<!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
<script type="Text/JavaScript">
							//~~~~~~~~~~~~~~~~~~~~~
function BasDec(val,bas)	//~~ Base => Décimal ~~
							//~~~~~~~~~~~~~~~~~~~~~
{var d=0,l="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 var p,v1,v2;
 for (var n=val.length-1;n>=0;n--)
	{	p=val.length-1-n;
		v1=val.charAt(n);
		v2=l.indexOf(v1);
		d=d+(v2*Math.pow(bas,p));	}
 return d;	}
							//~~~~~~~~~~~~~~~~~~~~~
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;	}
						//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function ctr(sel,txt)	//~~ contrôle de la valeur saisie ~~
						//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{for (var n=0; n < txt.length; n++)
  { var a=bas.substring(0,parseInt(sel[sel.selectedIndex].value));
    if (a.indexOf(txt.charAt(n))<0)  return n;     }
  return -1;     }
					//~~~~~~~~~~~~~~~~~~~~~~~~~~~
function trans()	//~~ contrôle avant calcul ~~
					//~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ te.value=te.value.toUpperCase();
  if (se.selectedIndex<0)
     { alert("choisir la base de départ");
       return;  }
  if (ss.selectedIndex<0)
     { alert("choisir la base du résultat");
       return;  }
  if (se.selectedIndex==ss.selectedIndex)
     { alert("Bases identiques, inutile ?");
       return;  }
  if (te.value.length<1) 
     { alert("donner une valeur de départ");
       return;  }
  var fin=false;
  while (!fin)
	{ if (te.value.charAt(0)=="0" )
               { te.value=te.value.substring(1,te.value.length);
                 if (te.value.length==0) fin=true; }
          else { fin=true; }  }
  if (te.value.length==0)
     { alert("0, quelque soit la base, c'est toujours 0");
	   return; }
  var e=ctr(se,te.value);
  if (e>=0)
     { alert("valeur de départ invalide\rCaractère "+
             (e+1)+" ("+te.value.charAt(e)+")");
       return;  }
  var trv;
  if (se[se.selectedIndex].value=="10")
           { trv=te.value; }
      else { trv=BasDec(te.value,se.selectedIndex+2); }
  if (ss[ss.selectedIndex].txt=="10")
           { ts.value=trv; }
      else { ts.value=DecBas(parseInt(trv),ss.selectedIndex+2);  }  }
</script>
</HEAD>
<BODY bgcolor=#FFCC99
      text=#400040>
<!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>
<table border=0>
<tr><td></td>
    <th><b>Base</th>
    <th><b>Valeur</th></tr>
<tr><td align=right><b>Nombre de Départ : </td>
    <td><select name=se
                class=fnt
                size=1></select></td>
    <td><input name=te
               type=text
               class=fnt
               size=32></td></tr>
<tr><td align=right><b>Résultat : </td>
    <td><select name=ss
				class=fnt
                size=1></select></td>
    <td><input name=ts
               type=text
               class=fnt
               size=32></td></tr>
<tr><td></td>
    <td><input type=button
               onclick="trans();"
               class=fnt
               value="Convertir"></td></tr>
</table>
<script type="Text/JavaScript">
		//~~~~~~~~~~~~~~~~~~~~
		//~~ initialisation ~~
		//~~~~~~~~~~~~~~~~~~~~
self.resizeTo(480,170);
var n,bas="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i=2; i < bas.length; i++)
    { se.length++;
      ss.length++;
      se[i-2].value=i;
      ss[i-2].value=i;
      switch (i) {
		case 2:
			n="Binaire";
			break;
		case 7:
      		n="Octal";
			break;
		case 10:
      		n="Décimal";
			se.selectedIndex=(i-2);
			break;
		case 16:
      		n="Héxa-Décimal";
			ss.selectedIndex=(i-2);
			break;
		default:
			n=i;
			break; }
      se[i-2].text=n;
      ss[i-2].text=n; 	}
</script>
</BODY></HTML>

Conclusion :


j'avais donné tous les éléments à je ne sais
plus qui pour faire ce petit programme.
comme on ne voit pas le résultat ici même,
je le fais.
si vous avez plus court (ou mieux) ,
s'il reste des bugs , merci de me le dire.

A voir également

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.