2012-12-04 23 views
7
function hex2a(hex) 
{ 
    var str = ''; 
    for (var i = 0; i < hex.length; i += 2) 
     str += String.fromCharCode(parseInt(hex.substr(i, 2), 16)); 
    return str; 
}  

Questa funzione non funziona in chrome, ma funziona bene in mozila. Qualcuno può aiutare, per favore.Esadecimale in stringa in javascript

Grazie in anticipo

+2

Sembra funzionare su Chromium per me: http://jsfiddle.net/fDzqu/ –

+2

Potrebbe chiarire "non funziona"? Cosa succede quando lo provi e in che cosa differisce da ciò che ti aspetti? Ricevi un messaggio di errore? Funziona bene in Chrome quando lo provo. http://jsfiddle.net/Guffa/uT2q5/ – Guffa

+0

Si prega di dare un esempio di input e output. Cosa c'è in chrome vs firefix? – loganfsmyth

risposta

6

Dai vostri commenti sembra che stai chiamando

hex2a('000000000000000000000000000000314d464737'); 

e avvisando il risultato.

Il tuo problema è che stai costruendo una stringa che inizia con 0x00. Questo codice viene generalmente utilizzato come terminatore di stringa per una stringa con terminazione null.

Rimuovere il 00 alla partenza:

hex2a('314d464737'); 

Si potrebbe risolvere il tuo funzione come questa per saltare quelli null "carattere":

function hex2a(hex) { 
    var str = ''; 
    for (var i = 0; i < hex.length; i += 2) { 
     var v = parseInt(hex.substr(i, 2), 16); 
     if (v) str += String.fromCharCode(v); 
    } 
    return str; 
} 

Si noti che la stringa completa di 0x00 ancora potrebbe essere utilizzato in altri contesti ma Chrome non può avvisarlo. Non dovresti usare questo tipo di stringhe.

+0

C'era un altro problema con il tuo argomento. Vedi modifica. –

+0

... si sta lavorando bene grazie mille :) – Aaradhana

Problemi correlati