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

この機能は chrome では動作しませんが、mozilla では問題なく動作しています。誰でも助けてください。

前もって感謝します

4

1 に答える 1

10

あなたのコメントから、あなたが電話しているようです

hex2a('000000000000000000000000000000314d464737');

結果を警告します。

問題は、0x00 で始まる文字列を作成していることです。このコードは通常、ヌル終了文字列の文字列ターミネータとして使用されます。

00at start を削除します。

hex2a('314d464737');

null の「文字」をスキップするように関数を次のように修正できます。

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

0x00 でいっぱいの文字列は他のコンテキストで引き続き使用される可能性がありますが、Chrome はそれを警告できないことに注意してください。この種の文字列は使用しないでください。

于 2012-12-04T07:41:34.823 に答える