2013-09-05 2 views
7

में एक हेक्स स्ट्रिंग में एक बड़ा पूर्णांक कनवर्ट करें मुझे जावास्क्रिप्ट में एक बड़ी संख्या को हेक्स स्ट्रिंग में बदलने के लिए एक तरीका खोजने की आवश्यकता है। बल्ले से सीधे, मैंने myBigNumber.toString(16) की कोशिश की लेकिन myBigNumber का बहुत बड़ा मूल्य है (उदाहरण के लिए 12 9 8 9 25419114529174706173) तो myBigNumber.toString(16) एक गलत परिणाम देगा, जो कि केवल शानदार है। मैं खुद समारोह द्वारा लेखन इस प्रकार की कोशिश की:जावास्क्रिप्ट

function (integer) { 
    var result = ''; 

    while (integer) { 
     result = (integer % 16).toString(16) + result; 
     integer = Math.floor(integer/16); 
    } 
} 

हालांकि, बड़ी संख्या 16 सापेक्ष सभी वापसी 0 (मुझे लगता है कि यह मौलिक मुद्दा क्या toString साथ समस्या का कारण है है मैं भी (integer - 16 * Math.floor(integer/16)) साथ (integer % 16) की जगह करने की कोशिश की, लेकिन वह था। एक ही मुद्दा।

मैं भी कैसे मैं एक मान्य परिणाम प्राप्त कर सकते हैं के रूप में बिग पूर्णांक जावास्क्रिप्ट पुस्तकालय पर ध्यान दिया है, लेकिन यह है कि एक के लिए एक बड़ा प्लगइन, उम्मीद है कि तुलनात्मक रूप से सरल समस्या है।

किसी भी विचार? हो सकता है कि कुछ विभाजन की तरह और दृष्टिकोण जीत? मैं हूँ वास्तव में यहां फंस गया।

+1

यह बड़ी संख्या के साथ एक समस्या है, '1298925419114529174706173 _String_ में रूपांतरित न होने == = 1298925419114529174706170' –

+0

आपका नंबर जावास्क्रिप्ट का सबसे बड़ा पूर्णांक पर है, http://stackoverflow.com/questions/307179/what-is-javascripts-max-int-whats-the-highest-integer-value-a-number देखें -कैन-गो-टी – bfavaretto

+2

अच्छी तरह से यह कोई मजेदार नहीं है। यदि मेरे पास स्ट्रिंग के रूप में संख्या का आधार 10 प्रतिनिधित्व था, तो क्या उसे हेक्स स्ट्रिंग में परिवर्तित करने का एक सीधा तरीका है? –

उत्तर

2

प्रश्न में संख्या जावास्क्रिप्ट का सबसे बड़ा पूर्णांक से ऊपर है। हालांकि, आप स्ट्रिंग द्वारा इतनी बड़ी संख्याओं के साथ काम कर सकते हैं और कुछ प्लगइन्स हैं जो आपको ऐसा करने में मदद कर सकते हैं। एक उदाहरण है जो इस परिस्थिति में विशेष रूप से उपयोगी है hex2dec

6

मान लिया जाये कि आप अपने पूर्णांक '1298925419114529174706173' की तरह एक दशमलव स्ट्रिंग के रूप में जमा है:

function dec2hex(str){ // .toString(16) only works up to 2^53 
    var dec = str.toString().split(''), sum = [], hex = [], i, s 
    while(dec.length){ 
     s = 1 * dec.shift() 
     for(i = 0; s || i < sum.length; i++){ 
      s += (sum[i] || 0) * 10 
      sum[i] = s % 16 
      s = (s - sum[i])/16 
     } 
    } 
    while(sum.length){ 
     hex.push(sum.pop().toString(16)) 
    } 
    return hex.join('') 
} 
+1

मेरे लिए काम करता है ... –

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