मैं एक्सेल में एक हेक्स संख्या को दशमलव संख्या में कैसे बदल सकता हूं?


11

मेरे पास एक सेल है जिसमें यह मान है:

0x00006cd2c0306953

और मैं इसे एक संख्या में बदलना चाहता हूं।

मैंने कोशिश की:

=HEX2DEC(C8)

C8मेरी हेक्स मान वाली सेल कहां है

मुझे #NUM त्रुटि मिलती है।

मैं क्या गलत कर रहा हूं?


मेरे अनुसार C पूंजी नहीं है यह छोटा हो सकता है। इसलिए 'c8' को आज़माएं
Sandy8086

7
@ Sandy8086: एक्सेल सेल इंडोल के मामले के बारे में परवाह नहीं करता है
नाथन फ़ेलमैन

जवाबों:


5

आप बस उपयोग कर सकते हैं:

HEX2DEC(right(A1,(len(A1)-2)))

len(A1)आपको 0xस्ट्रिंग की लंबाई देता है । की लंबाई 0xको छोड़कर, शेष स्ट्रिंग हेक्स संख्या है। डिक प्राप्त करने के लिए एक्सेल फ़ंक्शन का उपयोग करें।


क्या आपने यह कोशिश की है? क्या आपने इस पृष्ठ पर कुछ पढ़ा है? यह तीन बार कहा गया है कि HEX2DECअधिकतम दस हेक्स अंकों को स्वीकार करता है। प्रश्न में स्ट्रिंग 0x00006cd2c0306953, 18 वर्ण लंबा है। आपका समाधान मूल्यांकन करता है RIGHT(A1,(LEN(A1)-2)); 182 16 है, इसलिए RIGHT(…)रिटर्न 00006cd2c0306953, जो 16 अंकों का है। यहां तक ​​कि अगर आप अग्रणी शून्य से पट्टी करते हैं, तो आपके पास 12 अंक हैं, जो अभी भी बहुत सारे हैं। यदि आप इसे काम करने के लिए प्राप्त कर सकते हैं, तो कृपया अपने कॉन्फ़िगरेशन का वर्णन करें। (यानी, एक्सेल का कौन सा संस्करण आप उपयोग कर रहे हैं? और क्या आपने इसे काम करने के लिए कुछ भी मुश्किल किया?)
स्कॉट

4

जैसा कि TwiterZX ने संकेत दिया है, Hex2Decका इनपुट 10 वर्णों तक सीमित है और 6cd2c030695312 वर्णों का है। तो यह काम नहीं करेगा लेकिन उसके लिए अपने स्वयं के फ़ंक्शन को रोल करें। VBA का उपयोग करते हुए, एक मॉड्यूल जोड़ें और निम्न कोड का उपयोग करें (अपनी आवश्यकताओं के आधार पर समायोजित करने की आवश्यकता हो सकती है)

' Force explicit declaration of variables
Option Explicit


' Convert hex to decimal
' In:   Hex in string format
' Out:  Double
Public Function HexadecimalToDecimal(HexValue As String) As Double

    ' If hex starts with 0x, replace it with &H to represent Hex that VBA will understand
    Dim ModifiedHexValue As String
    ModifiedHexValue = Replace(HexValue, "0x", "&H")

    HexadecimalToDecimal = CDec(ModifiedHexValue)

End Function

Excel में, मान लें कि सेल A1 में 0x00006cd2c0306953, A2 का फॉर्मूला =HexadecimalToDecimal(A1)होगा 1.19652E+14। कॉलम को शून्य दशमलव के साथ एक संख्या में प्रारूपित करें और परिणाम होगा 119652423330131


3

HEX2DEC 10 वर्णों तक सीमित है, लेकिन इसका मतलब यह नहीं है कि हम इसका उपयोग नहीं कर सकते। बस इसे कई बार उपयोग करें, एक बार में 10 वर्णों को बदलने के लिए और प्रत्येक उपयोग के लिए 2 की उपयुक्त शक्ति लागू करें।

= HEX2DEC(RIGHT(C8,10))+HEX2DEC(MID(C8,3,5))*POWER(16,10)

[डिस्क्लेमर: इस समय अनछुए]

बाद में: मैं अब एक स्प्रेडशीट पर हूं, परीक्षण के लिए तैयार हूं। MID में 3,5 को 3,6 में बदलें। हम्म .. अभी भी ठीक नहीं है।

यह बताता है कि HEX2DEC हस्ताक्षरित हेक्स मूल्यों पर काम कर रहा है, इसलिए पहला शब्द नकारात्मक हो रहा है। निश्चित रूप से क्यों नहीं, लेकिन यहाँ निश्चित संस्करण है जो 2 ^ 40 (या 16 ^ 10, जैसा कि हम हेक्स में काम कर रहे हैं) को ठीक करने के लिए कहते हैं:

= HEX2DEC(RIGHT(C8,10))+POWER(16,10) + HEX2DEC(MID(C8,3,6))*POWER(16,10)

हालाँकि, यह केवल तभी काम करता है जब राइट (C8,10) नकारात्मक हो। यहाँ मेरा सामान्य समाधान है:

= HEX2DEC(RIGHT(C8,10))+IF(HEX2DEC(RIGHT(C8,10))<0,POWER(16,10),0) + HEX2DEC(MID(C8,3,6))*POWER(16,10)

Ugggh।


1
केवल 40 वां बिट साइन बिट है, इसलिए आप 64-बिट मान को दो 32-बिट मानों में विभाजित कर सकते हैं और यह हमेशा सकारात्मक रहेगा। अन्यथा हेक्स स्ट्रिंग के लिए एक शून्य पैड अगर यह 37 बिट से कम है
phuclv

2

एक फ़ंक्शन का उपयोग किए बिना, इस रूपांतरण को करने का एक गंदा तरीका है (उस के लिए इस एक्सेल फोरम थ्रेड को देखें ) स्ट्रिंग में प्रत्येक वर्ण के मान की गणना करने के लिए इस सूत्र का उपयोग करना है, फिर उन योग करें। इसमें स्पष्ट रूप से संख्या को विघटित करने के लिए अस्थायी कोशिकाओं का उपयोग करना शामिल है:

=HEX2DEC(LEFT(RIGHT(A$1,ROW()),1))*POWER(16,ROW()-1)

मान लें कि आप इन अस्थायी कोशिकाओं को 1 से 16 की पंक्तियों पर रखते हैं, यह प्रत्येक वर्ण को निकालकर, दाईं ओर से शुरू करके, इसे एक मान में परिवर्तित करता है, फिर 16 की प्रासंगिक शक्ति को लागू करता है। अपना मूल्य प्राप्त करने के लिए सभी 16 कोशिकाओं को योग करें।


1
IMHO 16^(ROW() - 1)बहुत साफ है और पढ़ने में आसान हैPOWER()
phuclv

2

निम्नलिखित का प्रयास करें:

=HEX2DEC(RIGHT(D93;8))+HEX2DEC(LEFT(D93;LEN(D93)-8))*POWER(2;32)

क्यों इस्तेमाल नहीं करते 2^32?
phuclv

0

सुनिश्चित करें कि आपका कॉलम जिसमें HEX नंबर हैं, वह 0x नहीं है। HEX नंबर C8 होना चाहिए, न कि 0xC8। आशा करता हूँ की ये काम करेगा।


0

यदि कोई प्रमुख या अनुगामी गैर-हेक्स (ABCDEF0123456789) वर्ण हैं, तो HEX2DEC विफल हो जाता है। रिक्त स्थान एक वास्तविक बारूदी सुरंग है क्योंकि वे दिखाई नहीं देते हैं। अक्सर हेक्स संख्या, स्ट्रिंग्स के रूप में प्रतिनिधित्व करती है, लॉग फ़ाइलों में अग्रणी और / या अनुगामी स्थान होते हैं। मुझे लगता है कि "= HEX2DEC (TRIM (A1)) आमतौर पर इस समस्या को ठीक कर देगा। हालांकि," = HEX2DEC (RIGHT (TRIM (A1), 10), 10) जैसे कुछ वर्ण HEX2DEC के 10 वर्ण सीमा के कारण आवश्यक हो सकते हैं।


-2

इस फ़ंक्शन ने उपयोग का प्रयास बदल दिया है

=HEXDEC(C8)

तो हेक्स और डीईसी के बीच नंबर 2 के बिना


1
यह बिल्कुल भी काम नहीं करता है
नाथन फ़ेलमैन

मुझे लगता है कि यह फ़ंक्शन भाषा पर निर्भर है, आपके एक्सेल ऐप और आपके संस्करण की मुख्य भाषा क्या है ..?
रियाद क्रिम

कार्यालय 2010 अंग्रेजी में
नाथन फेलमैन

4
HEX2DEC (या HEXDEC) फ़ंक्शन 40 बिट्स (10 वर्ण) तक सीमित है, और आपका नंबर 12 वर्णों का है। office.microsoft.com/en-us/excel-help/…
Riad Krim

यह भाषा कैसे निर्भर करती है? वहाँ भी नहीं की तरह एक समारोह विभाजक है ,या ;यहाँ
phuclv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.