2010-06-02 4 views
9

मैंने .NET Int64.Parse विधि के साथ एक संख्या को पार्स करने का प्रयास किया, और यह "0x3039" जैसी स्ट्रिंग को स्वीकार नहीं करेगा, भले ही आप सी # में निरंतर लिखते हैं। प्रलेखन विशेष रूप से "0x" उपसर्ग के लिए स्ट्रिंग को अस्वीकार करता है, और पिछला "एच" या तो काम नहीं करता है।क्या .NET पार्स विधियों में से कोई भी हेक्स स्ट्रिंग को "0x" से उपसर्ग कर सकता है?

हेक्साडेसिमल संख्या को पार्स करने के लिए, मुझे System.Globalization.NumberStyles.HexNumber विकल्प का उपयोग करना होगा।

किसी को भी हाथ से दूर जानता है, कुछ के लिए, कि Int64.Parse() एक "0x" उपसर्ग के साथ तार स्वीकार नहीं कर सकते, तो कृपया मुझे बताएं।

उत्तर

16

documentation समर्थित संख्या प्रारूपों के लिए अभिव्यक्ति देता है और तदनुसार न तो उपसर्ग और न ही पोस्टफिक्सेस हेक्साडेसिमल संख्याओं के लिए अनुमति है।

Convert.ToInt32(String, Int32) जब एक पुराने सवाल का देर से उत्तर के लिए आधार 16.

+0

त्वरित उत्तर के लिए धन्यवाद! मुझे इसकी ही खोज थी। – Triynko

2

नहीं, यह 0x स्वीकार नहीं करेगा। यहां तक ​​कि एक AllowHexSpecifier विकल्प भी है, लेकिन किसी कारण से इसका मतलब है कि ए-एफ अंक और अभी भी आपको 0x भाग को पट्टी करने की उम्मीद है।

+3

AllowHexSpecifier 1E3 हेक्स में 483 जा रहा है और ई प्रतिपादक की शुरुआत का संकेत 1000 जा रहा है के बीच अंतर करने में सक्षम होने की आवश्यकता है। –

1

क्षमा का उपयोग कर उपसर्गों 0x और 0X का समर्थन करता है, लेकिन यह सवाल पहले एक है कि "[.net] 0x उपसर्ग" के लिए खोज में आता था ।

हां, मानक .NET फ़ंक्शंस का कम से कम एक सेट है जो "0X" उपसर्ग के साथ शुरू होने वाले हेक्स स्ट्रिंग को सही तरीके से संभालता है।

.NET Framework 1.1, Int64Converter, Int32Converter, Int16Converter, और ByteConverter कक्षाओं में सिस्टम के रूप में। कॉम्पोनेंट मॉडल नामस्थान स्ट्रिंग के हिस्से के रूप में 0X हेक्साडेसिमल उपसर्ग स्वीकार करते हैं।

try 
{ 
    // get integer value of strValue 
    // assuming strValue has already been converted to uppercase e.g. by ToUpper() 
    int intValue; 
    if (strValue.StartsWith("0X")) 
    { 
     // support 0x hex prefix 
     intValue = (Int16)new System.ComponentModel.Int16Converter().ConvertFromString(strValue); 
    } 
    else 
    { 
     // decimal 
     intValue = int.Parse(strValue); 
    } 
} 
catch (FormatException) 
{ 
} 

MSDN प्रलेखीकरण लिंक: https://msdn.microsoft.com/en-us/library/system.componentmodel.int16converter(v=vs.71).aspx

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