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

यह फ़ंक्शन क्रोम में काम नहीं कर रहा है, लेकिन यह मोज़िला में ठीक काम कर रहा है। कृपया कोई मदद कर सकते हैं।हेक्साडेसिमल जावास्क्रिप्ट

अग्रिम

धन्यवाद
+2

मेरे लिए क्रोमियम पर काम करने लगता है: http://jsfiddle.net/fDzqu/ –

+2

क्या आप "काम नहीं कर रहे" को स्पष्ट कर सकते हैं? जब आप इसे आज़माते हैं तो क्या होता है, और यह आपकी अपेक्षा से अलग कैसे होता है? क्या तुम्हें कोई त्रुटि का संदेश मिला है? जब मैं कोशिश करता हूं तो क्रोम में ठीक काम करता है। http://jsfiddle.net/Guffa/uT2q5/ – Guffa

+0

कृपया एक उदाहरण इनपुट और आउटपुट दें। क्रोम बनाम फायरफिक्स में यह क्या है? – loganfsmyth

उत्तर

6
अपनी टिप्पणी से

ऐसा लगता है आप

hex2a('000000000000000000000000000000314d464737'); 

कॉल कर रहे हैं और परिणाम को चेतावनी।

आपकी समस्या यह है कि आप 0x00 से शुरू होने वाली स्ट्रिंग बना रहे हैं। इस कोड को आम तौर पर एक नल-टर्मिनेटेड स्ट्रिंग के लिए स्ट्रिंग टर्मिनेटर के रूप में उपयोग किया जाता है।

निकालें 00 शुरू में:

hex2a('314d464737'); 

आप इस तरह अपने कार्य को ठीक कर सकता उन अशक्त "चरित्र" को छोड़ने के लिए:

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 से भरा अभी भी प्रयोग किया जा सकता है अन्य संदर्भों में लेकिन क्रोम इसे सतर्क नहीं कर सकता है। आपको इस तरह के तारों का उपयोग नहीं करना चाहिए।

+0

अपने तर्क के साथ एक और समस्या थी। संपादन देखें। –

+0

... फिर यह ठीक धन्यवाद एक टन काम कर रहा है :) – Aaradhana

संबंधित मुद्दे