मैं C # में System.Byte byte[]किसी System.IO.Streamऑब्जेक्ट को संरचना कैसे परिवर्तित करूं ?
मैं C # में System.Byte byte[]किसी System.IO.Streamऑब्जेक्ट को संरचना कैसे परिवर्तित करूं ?
जवाबों:
बाइट को एक स्ट्रीम में बदलने का सबसे आसान तरीका MemoryStreamक्लास का उपयोग कर रहा है :
Stream stream = new MemoryStream(byteArray);
stream.ToArray()यदि आप अपने बाइट सरणी वापस चाहते हैं।
तुम MemoryStream.Writeविधि खोज रहे हो ।
उदाहरण के लिए, निम्न कोड एक byte[]सरणी की सामग्री को मेमोरी स्ट्रीम में लिखेगा :
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
वैकल्पिक रूप से, आप बाइट सरणी के आधार पर एक नई , गैर-रिज़र्व करने योग्य MemoryStreamवस्तु बना सकते हैं :
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Writeअधिक मेमोरी खपत वाला हैnew MemoryStream(myByteArray)
MemoryStreamडिफ़ॉल्ट रूप से बफर में अतिरिक्त स्थान आवंटित किया गया है (जैसे एक सूची के साथ)। यह आसानी से अधिभार का उपयोग करके निपटाया जा सकता है जो आपको क्षमता निर्धारित करने की अनुमति देता है, लेकिन यह वास्तव में केवल तभी उपयोगी है जब आप स्ट्रीम के किसी भी डेटा को लिखने की उम्मीद नहीं करते हैं (या यदि आप जानते हैं कि आपको कितने अतिरिक्त बाइट्स की आवश्यकता है )। लेकिन मुझे संदेह है कि jitbit इस तथ्य का उल्लेख कर सकता है कि जब आप byte[]कंस्ट्रक्टर का उपयोग करते हैं , तो सरणी की प्रतिलिपि नहीं बनाई जाती है - MemoryStreamतर्क में सरणी को संदर्भित करता है। यह अच्छा और बुरा दोनों हो सकता है, और यह शर्म की बात है कि यह MSDN पर प्रलेखित नहीं है :)
में देखो MemoryStreamवर्ग।