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

Ta funkcja nie działa w chrome, ale działa poprawnie w mozila. Czy ktoś może ci pomóc.Szesnastkowy na ciąg w javascript

góry dzięki

+2

Wydaje się, że mogę pracować dla Chromium: http://jsfiddle.net/fDzqu/ –

+2

Czy możesz wyjaśnić "nie działa"? Co się dzieje, gdy go wypróbujesz i jak to się różni od tego, czego oczekujesz? Czy otrzymujesz komunikat o błędzie? Działa dobrze w Chrome, gdy go wypróbuję. http://jsfiddle.net/Guffa/uT2q5/ – Guffa

+0

Podaj przykładowe dane wejściowe i wyjściowe. Co to jest w wersji chrome vs firefix? – loganfsmyth

Odpowiedz

6

Z twoich komentarzach wydaje dzwonisz

hex2a('000000000000000000000000000000314d464737'); 

i alarmowania wynik.

Twój problem polega na tym, że budujesz ciąg zaczynający się od 0x00. Ten kod jest zwykle używany jako terminator ciągu dla łańcucha zakończonego znakiem NUL.

Usuń 00 przy starcie:

hex2a('314d464737'); 

Można naprawić funkcję tak, aby pominąć te „charakter” zerowej:

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

pamiętać, że ciąg pełen 0x00 nadal może być używany w innych kontekstach, ale Chrome nie może tego ostrzec. Nie powinieneś używać tego rodzaju ciągów.

+0

Z twoim argumentem był jeszcze jeden problem. Zobacz edycję. –

+0

... ya działa dobrze dzięki tona :) – Aaradhana

Powiązane problemy