2012-12-04 9 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; 
}  

Diese Funktion funktioniert nicht in Chrom, aber es funktioniert gut in Mozila. Kann mir bitte jemand helfen.Hexadezimal zu Zeichenkette in Javascript

Vielen Dank im Voraus

+2

scheint für mich auf Chromium zu arbeiten: http://jsfiddle.net/fDzqu/ –

+2

Könnten Sie „funktioniert nicht“ klären? Was passiert, wenn Sie es versuchen, und wie unterscheidet sich das von dem, was Sie erwarten? Erhalten Sie eine Fehlermeldung? Funktioniert gut in Chrome, wenn ich es versuche. http://jsfiddle.net/Guffa/uT2q5/ – Guffa

+0

Bitte geben Sie eine Beispieleingabe und -ausgabe. Was ist es in Chrom vs Firefox? – loganfsmyth

Antwort

6

Von Ihre Kommentare scheint es Sie

hex2a('000000000000000000000000000000314d464737'); 

und Alerting das Ergebnis sind aufrufen.

Ihr Problem besteht darin, dass Sie eine Zeichenfolge erstellen, die mit 0x00 beginnt. Dieser Code wird im Allgemeinen als Zeichenfolgenabschlusszeichen für eine mit Null abgeschlossene Zeichenfolge verwendet.

entfernen die 00 beim Start:

hex2a('314d464737'); 

Sie können Ihre Funktion wie dieses Problem zu beheben jene null „Charakter“ überspringen:

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; 
} 

Beachten Sie, dass die Zeichenfolge voller 0x00 noch verwendet werden könnten, in anderen Kontexten, aber Chrome kann nicht darauf aufmerksam machen. Sie sollten diese Art von Zeichenfolgen nicht verwenden.

+0

Es gab ein anderes Problem mit Ihrer Argumentation. Siehe Bearbeiten. –

+0

... ya es funktioniert gut, danke eine Tonne :) – Aaradhana

Verwandte Themen