2013-10-31 8 views
10

की एक सरणी के लिए वर्ण की एक सरणी में कनवर्ट मैं इन सरणियोंपूर्णांकों

char[] array = {'1', '2', '3', '4'}; 
int[] sequence = new int[array.Length]; 

है वहाँ एक आसान तरीका sequence को array में नंबर आवंटित करने के लिए है?

मैं इस

for (int i = 0; i < array.Length; i++) 
{ 
    seqence[i] = Convert.ToInt32(array[i]); 
} 

की कोशिश की लेकिन मैं अपने आप में 1, 2, 3, 4 नहीं नंबरों की ASCII कोडिंग मिलता है।

+1

'1' से "1" तक स्ट्रिंग में संख्याओं को बदलने का प्रयास करें और इसी तरह। इसे बदलना चाहिए ताकि वे पूर्णांक में बदल जाए। – deathismyfriend

+0

'लेकिन मुझे एएससीआईआई कोडिंग 1,2,3,4 कोड नहीं मिलती है। दरअसल, आपको _Unicode_ चरित्र का 32-बिट हस्ताक्षरित पूर्णांक मिलता है। – Harrison

उत्तर

6

बस कन्वर्ट char एक string करने के लिए पहले:

for (int i = 0; i < array.Length; i++) 
{ 
    sequence[i] = Convert.ToInt32(array[i].ToString()); 
} 

लेकिन निश्चित रूप से, आप सभी एक ही LINQ क्वेरी में ऐसा कर सकता है:

char[] array = {'1', '2', '3', '4'}; 
int[] sequence = array.Select(c => Convert.ToInt32(c.ToString())).ToArray(); 
3

कोशिश

for (int i = 0; i < arr.Length; i++) 
{ 
    seqence[i] = (int)Char.GetNumericValue(array[i]); 
} 
1

आपको लगता है कि प्राप्त करने के लिए Enumerable.Range का उपयोग किया जा सकता है सकते हैं। यह लगातार संख्याओं का अनुक्रम उत्पन्न करता है।

बस एक उदाहरण:

IEnumerable<int> squares = Enumerable.Range(1, 10) 

इस मामले में है अगर मूल चार सरणी सिर्फ चार में संख्या का एक लगातार अनुक्रम है। अपने चार सरणी पर

array.Select(x => int.Parse(x.ToString())) 
12
using System.Linq; 

char[] array = { '1', '2', '3', '4' }; 
var ints = array.Select(x => int.Parse(x.ToString())); 
0

दोहराएं और अगले रूपांतरण का उपयोग करें::

तो सरणी मनमाना आदेश और अनुक्रम का विषय है, बस सही रूपांतरण का उपयोग

char[] charArray = { '1', '2', '3', '4' }; 

int[] intArray= new int[charArray .Length]; 

for (int i = 0; i < charArray .Length; i++) 
{ 
    intArray[i] = (int)Char.GetNumericValue(charArray[i]); 

} 
6

यदि आप परिवर्तित प्रत्येक अक्षर पहले एक स्ट्रिंग के लिए, फिर int.Parse (या अभी भी Convert.ToInt32) का उपयोग करें जो काम करेगा।

व्यक्तिगत रूप से मैं इसके लिए LINQ का उपयोग करता हूं, उदा।

int[] sequence = array.Select(x => int.Parse(x.ToString())).ToArray(); 

... या ToList उपयोग करें यदि आप बस के रूप में List<int> के साथ खुश हैं।

आप Char.GetNumericValue उपयोग करने के लिए के रूप में एक और जवाब में सुझाव चाहते हैं, आप LINQ भी साथ उपयोग कर सकते हैं:

int[] sequence = array.Select(x => (int) char.GetNumericValue(x)).ToArray(); 

ध्यान दें कि int के कलाकारों की आवश्यकता है क्योंकि char.GetNumericValue रिटर्न एक double। (जैसे उदाहरण के लिए "एक आधा" के रूप में मूल्यों के लिए यूनिकोड वर्ण हैं।)

या यदि आप पूरी तरह से सुनिश्चित कर रहे हैं आप केवल आपके त्वरित और गंदी इस्तेमाल कर सकते हैं ASCII अंक करने जा रहे हैं,:

int[] sequence = array.Select(x => x - '0').ToArray(); 
0

इस का उपयोग करें:

for (int i = 0; i < array.Length; i++) 
{ 
    sequence[i] = array[i] - '0'; 
} 

कई सही जवाब यहाँ हैं, लेकिन यह सबसे तेज है (जब तक आप असुरक्षित कोड का उपयोग करना चाहते हैं), और यह अतिरिक्त मेमोरी का उपयोग नहीं करता।

0

इस प्रयास करें:

char[] array = { '1', '2', '3', '4' }; 

int[] sequence = new int[array.Length]; 

for (int i = 0; i < array.Length; i++) 
{ 
    sequence[i] = int.Parse(array[i].ToString()); 
} 
0

इंटीजर में कनवर्ट करने से पहले अपने चार मान को स्ट्रिंग में कनवर्ट करने का प्रयास करें:

for (int i = 0; i < arr.Length; i++) 
{ 
    sequence[i] = Convert.ToInt32(array[i].ToString()); 
} 
संबंधित मुद्दे