2013-02-26 112 views
7

के साथ एक बाइट [] भरना मैंने एक ऐसा एप्लीकेशन बनाया जो मेरे SQLiteDatabase में बाइट सरणी संग्रहीत करता है। यह वही एप्लिकेशन प्रत्येक 'x' सेकंड डेटाबेस से बाइट सरणी भी चुनता है।एकाधिक बाइट [] s

मैं कैसे को भरने है एक बाइट: - -> SQLiteDatabase> अनुप्रयोग

मेरा प्रश्न है

आवेदन:

dataflow अपने आवेदन की इस प्रकार है SQLiteDatabase से सभी आने वाले बाइट सरणी के साथ सरणी?

उदाहरण के लिए:

Byte[] Data; 

निम्नलिखित बाइट सरणी से भरा जाना चाहिए:

Byte[] IncomingData; 

IncomingData लगातार द्वारा भरा जा रहा है SQLiteDatabase।

डेटा को इनकमिंगडेटा से लगातार भरने की आवश्यकता है।

क्या कोई मेरी मदद कर सकता है?

+0

"भरने" का क्या अर्थ है? क्या आप उन्हें जोड़ना चाहते हैं? – usr

+0

हां, उदाहरण के लिए स्ट्रिंग में यह होगा: स्ट्रिंग str1 = "12"; स्ट्रिंग str2 = "13"; यदि आप उन्हें जोड़ देंगे, तो परिणाम होगा: 1213, मुझे अपने बाइट सरणी – Max

+1

के साथ एक ही चीज़ की आवश्यकता है क्यों न केवल बाइट्स की सूची का उपयोग करें? – James

उत्तर

4

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

data1.Concat(IncomingData); 

आप System.Linq नाम स्थान संदर्भ जोड़ने की आवश्यकता होगी।

+0

मैंने सिस्टम.लिंक जोड़ा, जब मैं "डेटा 1" टाइप करता हूं। इंटेलि भावना मुझे कंसट के साथ मदद करेगी, लेकिन इसके लिए "<>" उन ब्रेसिज़ में क्या डालने की आवश्यकता है? – Max

+0

+1 मैं स्मृति धाराओं और सब कुछ – Liam

+1

@mobstaa संदर्भ के लिए सोच रहा था, <> निर्दिष्ट सामान्य प्रकार – Liam

4

कुछ दृष्टिकोण हैं जो आप ले सकते हैं।

  1. एक List<byte> और List.AddRange
  2. उपयोग LINQ के Enumerable.Concat
  3. उपयोग Array.Copy का उपयोग करें और यह सब करने के लिए मैन्युअल रूप से
तीनों में से

, यदि संभव हो तो List के साथ जाने के रूप में यह (संभावना) कम हो जाएगा आवश्यक सरणी प्रतिलिपि की मात्रा। यह सूची के लिए बनाई गई है, वे दृश्यों के पीछे एक सरणी का उपयोग एक निश्चित capacity के साथ करते हैं, यह क्षमता पर हिट होने पर 4 और युगल शुरू होता है। क्षमता को list.Capacity संपत्ति या कन्स्ट्रक्टर के साथ कुछ बड़ी संख्या में भी सेट किया जा सकता है जो int लेता है जैसे आप किसी सरणी के साथ कर सकते हैं। आप हमेशा List.ToArray का उपयोग करके सूची वापस ला सकते हैं।

संख्यात्मक। कॉनकैट केवल न्यूनतम आकार की सरणी बनायेगा, जिसका अर्थ है कि हर बार आपको byte एस प्राप्त करने पर एक नई सरणी बनाने की आवश्यकता होती है।

+0

सूची में बदलने का ओवरहेड क्यों है? जैसा कि आप कहते हैं, वे वैसे भी पृष्ठभूमि में Arrays का उपयोग करें। – mattytommo

+0

असल में यह 'ToArray'' AsArray' नहीं है। – juharr

+0

कॉनकैट हमेशा दो से एक नई सरणी बनाएगा, अगर यह हर कुछ सेकंड में हो रहा है जो बहुत अधिक प्रतिलिपि है। एक सूची को क्षमता के साथ शुरू किया जा सकता है और जब उस क्षमता तक पहुंच जाती है तो केवल इसकी प्रतिलिपि बनाई जाती है। हाँ, ToArray। –