2011-03-04 16 views
12

मैं चांदी के प्रकाश में विंडो फोन 7 अनुप्रयोग विकसित कर रहा हूं। मैं विंडो फोन 7 एप्लिकेशन में नया हूं। मैं स्ट्रिंग प्रारूप में लंबे मूल्य के रूप में इस प्रकार हैलंबे समय से int में .NET को कैसे परिवर्तित करें?

String Am = AmountTextBox.Text.ToString() 

AmountTextBox.Text.ToString() उपरोक्त कोड में लंबे मूल्य जो स्ट्रिंग स्वरूप में है है। मैं अपने आवेदन में 15 अंकों का अंतर मान स्टोर करना चाहता हूं।

मुझे रूपांतरण के लिए निम्न लिंक मिला।

Can I convert long to int?

मैं एक लंबे मूल्य जो स्ट्रिंग स्वरूप में है int करने के लिए कैसे कन्वर्ट करना चाहिए? क्या आप कृपया मुझे कोई कोड या लिंक प्रदान कर सकते हैं जिसके माध्यम से मैं उपरोक्त मुद्दे को हल कर सकता हूं? अगर मैं कुछ भी गलत कर रहा हूं तो कृपया मुझे मार्गदर्शन करें।

+3

एक 'Int32' केवल 10 अंक है (' 2,147,483,647', अहस्ताक्षरित '4,294,967,295'), जहाँ आप अन्य 5 स्टोर करने के लिए करना चाहते हैं? – Bobby

+0

मैं अपने आवेदन में डेटाबेस के रूप में एक्सएमएल का उपयोग कर रहा हूं। मैं पूरे 15 अंकों के मूल्य को संग्रहीत करने के लिए नोड का उपयोग कर रहा हूं। तो क्या मुझे अपने स्ट्रिंग मान को लंबे समय तक गुप्त करना चाहिए? कृपया मेरा मार्ग दर्शन कीजिए। मैं इस प्रकार के रूपांतरणों के लिए नया हूं –

+0

तो, मुझे लगता है कि आप वास्तव में एक 'स्ट्रिंग' को कन्वर्ट करना चाहते हैं जिसमें एक संख्या 'लंबी' है? –

उत्तर

7

आप एक 15 अंकों के पूर्णांक को स्टोर नहीं कर सकते क्योंकि पूर्णांक के लिए अधिकतम मान 2,147,483,647 है।

long -Value के साथ क्या गलत है?

आप yout उपयोगकर्ता इनपुट से long -Value पाने के लिए TryParse() इस्तेमाल कर सकते हैं:

String Am = AmountTextBox.Text.ToString(); 
long l; 
Int64.TryParse(Am, out l); 

यह false वापस आ जाएगी पाठ long में परिवर्तित नहीं किया जा सकता है, तो यह बहुत उपयोग करने के लिए सुरक्षित है।

अन्यथा, एक longint को बदलने है एक आसान

रूप
int i = (int)yourLongValue; 

MSBs को त्यागकर और LSBs लेने के साथ अपने खुश हैं।

0

सी # में अधिकतम Int32 मूल्य 2,147,483,647 है, जो आपको आवश्यक 15 अंकों से कम है।

क्या आप वाकई इस मान को एक int में परिवर्तित करने की आवश्यकता है? ऐसा लगता है कि आप long में मान को संग्रहीत करने से बेहतर होंगे, या इसे String के रूप में छोड़ दें।

+0

हाँ आप सही हैं। मुझे लगता है कि मुझे अपने स्ट्रिंग मान को लंबे समय में परिवर्तित करना चाहिए। यह कैसे करना है ? क्या आप मुझे कोई कोड प्रदान कर सकते हैं। –

+1

कोड कोड चाहते हैं तो कोडी ग्रे का जवाब सुंदर दिखता है। – GavinH

0

एक लंबा मूल्य एक इंटीजर 32 मान से अधिक डेटा स्टोर करता है, इसलिए यदि आप सभी 15 अंकों को रखना चाहते हैं तो आप एक मानक इंटीजर में परिवर्तित नहीं कर सकते हैं।

लेकिन एक तरफ से 'जो' डेटाप्रकार आप उपयोग करना चाहते, Convert वर्ग आप मदद करनी चाहिए अर्थात Convert.ToInt64 जो आप क्या चाहते हैं

18

उपयोग Convert.ToInt32() कर सकते हैं। यदि मूल्य int के लिए बहुत बड़ा है तो यह ओवरफ्लो एक्सेप्शन फेंक देगा।

यह विधि Int64 और स्ट्रिंग्स सहित मानों की एक पूरी श्रृंखला ले सकती है।

1

आपके पास string के रूप में संग्रहीत एक नंबर है, और आप इसे एक संख्यात्मक प्रकार में परिवर्तित करना चाहते हैं।

आप इसे int (Int32 के रूप में भी जाना जाता है) टाइप करने के लिए परिवर्तित नहीं कर सकते हैं, क्योंकि अन्य उत्तरों का उल्लेख है, उस प्रकार के आपके इच्छित मूल्य को स्टोर करने के लिए पर्याप्त सीमा नहीं है।

इसके बजाय, आपको मान को long (जिसे Int64 भी कहा जाता है) में परिवर्तित करने की आवश्यकता है। ऐसा करने का सबसे सरल और सबसे दर्दनाक तरीका TryParse method का उपयोग कर रहा है, जो किसी संख्या के स्ट्रिंग प्रस्तुति को अपने 64-बिट हस्ताक्षरित पूर्णांक समकक्ष में परिवर्तित करता है।

इस विधि का उपयोग करने का लाभ (Parse जैसे कुछ की बजाय) यह है कि रूपांतरण विफल होने पर अपवाद नहीं फेंकता है। चूंकि अपवाद महंगे हैं, इसलिए आपको पूरी तरह जरूरी होने तक उन्हें फेंकने से बचना चाहिए। इसके बजाए, यदि रूपांतरण सफल होता है तो कनवर्ट किए गए नंबर को प्राप्त करने के लिए विधि के पहले तर्क के रूप में कनवर्ट करने के लिए संख्या और out मान को स्ट्रिंग निर्दिष्ट करें। वापसी मूल्य एक बूलियन है, यह दर्शाता है कि रूपांतरण सफल था या नहीं।

नमूना कोड:

private void ConvertNumber(string value) 
{ 
    Int64 number; // receives the converted numeric value, if conversion succeeds 

    bool result = Int64.TryParse(value, out number); 
    if (result) 
    { 
     // The return value was True, so the conversion was successful 
     Console.WriteLine("Converted '{0}' to {1}.", value, number); 
    } 
    else 
    { 
     // Make sure the string object is not null, for display purposes 
     if (value == null) 
     { 
      value = String.Empty; 
     } 

     // The return value was False, so the conversion failed 
     Console.WriteLine("Attempted conversion of '{0}' failed.", value); 
    } 
} 
0

सी # int में 32 बिट है और long 64 बिट्स है। इसलिए long के सभी मान int नहीं हो सकते हैं। शायद int एस की एक सरणी प्राप्त करें?

public static int[] ToIntArray(long l) 
{ 
    var longBytes = BitConverter.GetBytes(l); 

    // Get integers from the first and the last 4 bytes of long 
    return new int[] { 
     BitConverter.ToInt32(longBytes, 0), 
     BitConverter.ToInt32(longBytes, 4) 
    }; 
} 
संबंधित मुद्दे