Was muß ich am Script ändern damit die Ausgabe dreistellig ist
Sandra M.
- javascript
Hallo,
hab ein HEX. to DEC. Editorscript was nicht so funktioniert wie ich es gern hätte.
Die Ausgabe sollte immer dreistellig sein.
Z.B.
Hex. : FB 59 FB 01
Ausgabe als DEC. ist: 251 89 251 1
Sollte aber so aussehen: 251 089 251 001 immer dreistellig.
Was muß ich am Script ändern damit die Ausgabe dreistellig ist.
Freu mich auf eure Hilfe,
und bedanke mich.
Gruß
Sandra M.
----------------------
Hier das Script:
----------------------
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><font size="2" color="#0000ff">Hex. </font></td>
<td>
<input id="hexinput" type="text" value="" style="width:36em; font-size:.9em" onkeydown="KeyClick(event,'hex');" />
<input id="hex2dec" type="button" title="Convert hexadecimal to decimal" style="font-size:.9em" value="Hex to Dec" accesskey="X"
onclick="document.getElementById('decinput').value=CalcDec(document.getElementById('hexinput').value);"/>
</td>
</tr>
<tr>
<td><font size="2" color="#0000ff">Dec. </font></td>
<td>
<input id="decinput" type="text" value="" style="width:36em; font-size:.9em" onkeydown="KeyClick(event,'dec');" />
<input id="dec2hex" type="button" title="Convert decimal to hexadecimal" style="font-size:.9em" value="Dec to Hex" accesskey="D"
onclick="document.getElementById('hexinput').value=CalcHex(document.getElementById('decinput').value);" />
</td>
</tr>
</table>
<script type="text/javascript" language="JavaScript1.2">
var is_NN="Netscape"==navigator.appName;
if (document.all && !document.getElementById) {
document.getElementById = function(id) {
return document.all[id];
}
}
function CalcDec(hex) {
// convert hex to dec
dec="";
spaceorigin=0;
spaceindex=0;
len=hex.length;
num="";
while (spaceorigin < len) {
if (0>(spaceindex=hex.indexOf(" ",spaceorigin)))
spaceindex=len;
num=hex.substring(spaceorigin,spaceindex);
spaceorigin=1+spaceindex;
if ("" != num) {
num=parseInt(num,16);
if (true == isNaN(num))
num="?";
dec=dec+" "+num;
}
}
return dec.substring(1);
}
function CalcHex(dec,uppercase) {
// convert hex to dec
// not the most elegant or sophisticated solution, but it works
hex="";
spaceorigin=0;
spaceindex=0;
len=dec.length;
num="";
base="0123456789abcdef";
if (true == uppercase)
base=base.toUpperCase();
while (spaceorigin < len) {
hexnum="";
neg="";
if (0>(spaceindex=dec.indexOf(" ",spaceorigin)))
spaceindex=len;
num=dec.substring(spaceorigin,spaceindex);
spaceorigin=1+spaceindex;
if ("" != num) {
if (true == isNaN(num))
hex=hex+" ?";
else {
if ("-" == num.charAt(0)) {
neg="-";
num=num.substr(1);
}
if (0<num) {
while (0<(num=num/16)) {
whole=Math.floor(num);
remain=0;
if (num != whole) {
remain=16*(num-whole);
num=whole;
}
remain=base.charAt(remain);
hexnum=remain+hexnum;
}
}
else
hexnum="0";
hex=hex+" "+neg+hexnum
}
}
}
return hex.substring(1);
}
function KeyClick(event,fld) {
// capture Enter key to calculate conversion
if (is_NN)
var key = event.which;
else
var key = event.keyCode;
if (13 == key) {
if ("hex" == fld)
document.getElementById("decinput").value = CalcDec(document.getElementById("hexinput").value);
else
document.getElementById("hexinput").value = CalcHex(document.getElementById("decinput").value, document.getElementById("uppercase").checked);
return 0;
}
else
return 1;
}
</script>
Hi,
Das ist einfach. Ein Zahl hat von alleine niemals eine fuehrende 0. Deshalb brauchst du einen String. Du schaust Dir an, wieviele Stellen deiser hat und wenns weniger als 3 sind schreibst Du entsprechend viele 0 davor.
z.B. if zahl.length < 3 zahl = '0' + zahl;
Danke euch für eure Antworten.
Und ein grossen Dank an Stuppi,
das Script ist ja viel Kleiner und funzt so wie ich das wollte (freu)
Gruß
Sandra M.
Hallo,
hab ein HEX. to DEC. Editorscript was nicht so funktioniert wie ich es gern hätte.
Das ist sowieso so lala, es gibt dafür Funktionen in JS man muss das nicht von Hand umrechnen.
if (document.all && !document.getElementById) {
document.getElementById = function(id) {
return document.all[id];
}
}
function CalcDec(hex) {
if(!hex) return;
var part = hex.split(' ');
var dec = [];
for(var i = 0; i < part.length; i++) {
var tmp = parseInt( part[i], 16).toString();
tmp = ('000' + tmp).substring(tmp.length);
dec.push(tmp);
}
return dec.join(' ');
}
function CalcHex(dec,uppercase) {
if(!dec) return;
var part = dec.split(' ');
var hex = [];
for(var i = 0; i < part.length; i++) {
var tmp = Number(part[i]).toString( 16) ;
if(uppercase) tmp = tmp.toUpperCase();
if(tmp.length < 2) tmp = '0' + tmp;
hex.push(tmp);
}
return hex.join(' ');
}
function KeyClick(event,fld) {
// capture Enter key to calculate conversion
var key = event.which || event.keyCode;
if (13 == key) {
if ("hex" == fld)
document.getElementById("decinput").value =
CalcDec(document.getElementById("hexinput").value);
else
document.getElementById("hexinput").value =
CalcHex(document.getElementById("decinput").value, document.getElementById("uppercase").checked);
return 0;
}
return 1;
}
Struppi.
So! Das haste nu davon. Jetzt will sie dich bestimmt heiraten! Selbst Schuld!!
Sup!
Boah ey... das Skript ist ja voll der Müll; diese beiden Funktionen zum Berechnen von Hex- und Dezimalzahlen sollte man direkt bei "Daily WTF" anmelden. Nenene... die beiden Funktionen kann man locker durch .parseInt() und .toString() ersetzen.
Und wenn ein String zuwenig Nullen vorne hat, dann kann man rausfinden wie lang er ist und ggf. Nullen davor machen.
Ist ja "SELF"-Html hier.
Gruesse,
Bio