Newsgroup: it.comp.lang.javascript
Titolo: Funzione decimale a binario

qualcuno mi sa dire la funzione x convertire da decimale a binario e
viceversa.
grazie

 binario e viceversa.
<script language="JavaScript">
// da decimale a binario
function tobin(x) {
 return (x > 1 ? tobin(x >> 1) : "") + String(x & 1);
}
// da binario a decimale
function bintodec(x) {
var len = x.length;
 return (len > 1 ? bintodec(x.substring(0, len - 1)) * 2 : 0) +
Number(x.charAt(len - 1));
}
// se poi ti serve una funzione che converte in qualsiasi base
function itoa(n, radix) {
if (n < radix)
   return (n < 10) ? String(n) : "ABCDEF".charAt(n - 10);
return itoa(Math.floor(n / radix), radix) + itoa(n % radix, radix);
}
document.write(tobin(105));
document.write("<br>" + itoa(105, 2));
document.write("<br>" + bintodec("1101001"));
</script>
Maurizio.

 grazie
ciao
il metodo ParseInt ammette un secondo argomento, detto radice:
parseInt(NUMERO,RADICE)
i numeri vanno da 2 a, se non erro, 32
2 converte in binario, 10 in decimale, 16 in tripletta esadecimale
per ottnerer un binario, dunque, da 34:
var mioBinario=parseInt(34,2)
Una osservazione: io lavoro con le radici solo in esadecimale, per cui quel che
ottengo sono sempre stringe:
non so se il matodo parseInt possa esigere, nel caso speciifchi una radice, che
il primo argomento sia stringa: non c'č un solo
motivo al mondo per cui dovrebbe, ma ho visto i browser fare di tutto... se
cosě fosse, converti il tuo numero a stringa tipo
var bho=""+34
che restituisce "34" come stringa e la assegna a bho. Ma non credo dia
problemi. Con gli esadecimali perň li darebbe, poichč una copia esa tipo f5
non potrebbe essere passata che come stringa, o l'interprete penserebbe sia un
riferimento a una variabild i nome f5 che non esiste... vabbč non voglio
confonderti le idee... prova, semmai posti di nuovo
ciao
Alberto Vallini aka TrueLies
http://www.unitedscripters.com/
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 var mioBinario=parseInt(34,2)
Veramente a me risulta il contrario: parseInt converte una stringa in
numero. Per cui parseInt(34, 2) non può che riportare un errore (NAN) perché
34 non è composto da cifre binarie. L'istruzione giusta è:
parseInt("101110", 2), che converte il numero binario "101110" in base 2 in
decimale (46).
Non mi risulta che esista una funzione che converta da decimale a binario.
Maurizio.

 wrote in message
news:7yUX7.3985$SE3.1...@twister1.libero.it...


Sì ho aggiunto questa specificazione in un altro post dedicato allo stesso
argomento (conversione di numeri da decimale a binario o viceversa): il primo
argomento di parseInt deve essere
una stringa (non ho aggiunto la specificazione anche su questo thread perchè
che vuoi, con tutti sti thread alle volte ci si dimentica)
Fatto il che il secondo argomento di parseInt permette tutte le conversioni.
Per convertire un numero in stringa basterebbe premettergli un "", tipo:
var num=34
var numString=""+34
e poi
var converted=parseInt(numString,RADICE)
Il problema è che ci sono circostanze in cui tali tentativi di conversione di
un numero in stringa
possono ottenere risultati inattesi: una descrizione assai dettagliata  e a suo
modo "interessante" (nei limiti in cui uno si interssa a javaScript, ovvio) di
una circostanza in cui questo problema è occorso si può torvare a:
http://www.unitedscripters.com/scripts/array8.html#4
può valere la pena tenerlo presente nel caso tale conversione fallisca (non
dovrebbe, ma neppure nel caso specifico avrebbe dovuto)
ciao
TrueLies
news:7yUX7.3985$SE3.1...@twister1.libero.it...



 > 
