Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    funzione da esadecimale a binario

    ciao.....come si trasforma un esadecimale in binario?
    c'e' qualcosa di gia pronto?

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Pagina senza titolo</title>
    
        <script language="javascript" type="text/javascript">
    // <!CDATA[
    
    function EsadecimaleBinario(n)
    {
        var d = base_to_dec(16, n);
        s = dec_to_base(d, 2);
        return s;
    }
    
    function BinarioEsadecimale(n)
    {
        var d = base_to_dec(2, n);
        s = dec_to_base(d, 16);
        return s;
    }
    
    
    
    function dec_to_base(numero, base)
    {
    	//if(!isnumber(numero)) return undefined;
    	if(isNaN(numero)) return undefined;
    	
    	var quoziente, resto;
    	
    	var simboli = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'];
    
    	var s = "";
    	numero = parseInt(numero);
    	base = parseInt(base);
    	do
    	{
    		quoziente = parseInt(numero / base);
    		resto = parseInt(numero % base);
    		numero = quoziente;
    		
    		s = simboli[resto] + s;
    
    	} while (quoziente > 0);
    	
    	return s;
    
    }
    
    function base_to_dec(base, s)
    {
    	base = parseInt(base);
    
    	var c = s.length;
    	var i = 0;
    	var j = 0;
    	var t;
    	var n = 0;
    	var k = 0;
    	var bk = 1;
    
    	for (i = 0; i < c; i++)
    	{
    		j = (c - 1) - i;
    		t = s.charCodeAt(j);
    		
    		if(t >= 48 && t <= 57) t -= 48;
    		else if(t >= 65 && t <= 70) t -= 55;
    		else if(t >= 97 && t <= 102) t -= 87;
    		else t = null;
    		
    		if (t >= base) t = null;
    		
    		
    		bk = 1;
    		for(k = 1; k <= i; k++) bk *= base; 
    		n += parseInt(t) * parseInt(bk);
    			
    	}
    	
    	return n;
    	
    	
    	
    }
    // ]]>
        </script>
    
    </head>
    <body>
        <input id="Button1" type="button" value="Esadecimale -> binario" onclick="alert(EsadecimaleBinario('19AF'));" />
        <input id="Button2" type="button" value="binario -> esadecimale" onclick="alert(BinarioEsadecimale('1100110101111'));" />
    </body>
    </html>
    Pietro

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    le funzioni di su, EsadecimaleBinario e BinarioEsadecimale, possono essere sostituite da:

    codice:
    function BaseToBase(numero, base_inizio, base_fine)
    {
        if(base_inizio == base_fine) return numero;
        if(base_inizio == 10) return dec_to_base(numero, base_fine);
        if(base_fine == 10) return base_to_dec(base_inizio, numero);
    
        var d = base_to_dec(base_inizio, numero);
        s = dec_to_base(d, base_fine);
        return s;
        
    }
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    mille grazie.....proprio quello che mi serviva

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    ciao....
    Mi potreste fare un esempio di come trasformereste un mac address(6 byte) in binario usando questa funzione?

    Secondo me io sbagli perche ...essendo il mac address formattato cosi 00,07,95,db,bf,c3
    io ho splittato in modo da ottenere 000795dbbfc3
    e l'ho passata alla funzione postata da pietro09 EsadecimaleBinario('000795dbbfc3');

    boh....a me quel mac li mi risulta 11110010101110110111011111111000011

    ma questo secondo me e' sbagliato...

    perdonate la mia ignoranza....
    grazie

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    l'ho provato. Questo è il confronto con la calcolatrice di windows

    11110010101110110111011111111000011
    11110010101110110111011111111000011

    a me sembrano uguali
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.