मैं कहीं से बाइट्स (ऐरे [बाइट]) की एक सरणी प्राप्त करना चाहता हूं (फ़ाइल से, सॉकेट, आदि से पढ़ें) और फिर बिट्स को खींचने के लिए एक प्रभावी तरीका प्रदान करें (उदाहरण के लिए 32- सरणी में ऑफ़सेट एन से बिट पूर्णांक)। मैं फिर बाइट सरणी (इसे छिपाने) को सरणी से बाहर खींचने के लिए कार्यों को प्रदान करना चाहता हूं (शायद प्रत्येक बिट के लिए आलसी मूल्य का उपयोग करके)।स्कैला में अपरिवर्तनीय बाइट सरणी करने का सबसे प्रभावी तरीका क्या है?
मैं कल्पना करता हूं कि एक रैपिंग क्लास है जो सरणी सामग्री को साबित करने के लिए कन्स्ट्रक्टर में एक अपरिवर्तनीय बाइट सरणी प्रकार लेता है, कभी संशोधित नहीं होता है। इंडेक्सडैक [बाइट] प्रासंगिक लग रहा था, लेकिन मैं काम नहीं कर सका [बाइट] से इंडेक्सडैक [बाइट] तक कैसे जाना है।
प्रश्न 2 का भाग 2 यह है कि अगर मैंने इंडेक्सडैक [बाइट] का उपयोग किया तो परिणामी कोड धीमा हो जाएगा? मुझे जितनी जल्दी हो सके निष्पादित करने के लिए कोड की आवश्यकता है, इसलिए अगर कंपाइलर इसके साथ बेहतर काम कर सकता है तो ऐरे [बाइट] के साथ चिपकेगा।
मैं सरणी के चारों ओर एक रैपर वर्ग लिख सकता हूं, लेकिन इससे चीजों को धीमा कर दिया जाएगा - सरणी में बाइट्स तक प्रत्येक पहुंच के लिए एक अतिरिक्त स्तर का संकेत। सरणी एक्सेस की संख्या के कारण प्रदर्शन महत्वपूर्ण है जो आवश्यक होगा। मुझे तेज़ कोड चाहिए, लेकिन एक ही समय में अच्छी तरह से कोड करना चाहते हैं। धन्यवाद!
पीएस: मैं एक स्कैला नौसिखिया हूं।
क्षमा करें, एक स्कैला नौसिखिया के रूप में मैं आपका उदाहरण समझ नहीं पा रहा हूं। क्या आप कह रहे हैं कि ऐरे [बाइट] का उपयोग करके बहुत सारे अनबॉक्सिंग होंगे? इसके अलावा मुझे यकीन नहीं था कि अंतर्निहित दृष्टिकोण को कैसे ट्रिगर किया जाए। मैंने स्पष्ट रूप से जोड़ा ": इंडेक्सडैक [बाइट]" मेरे सरणी अस्थिरता के बाद, लेकिन "टाइप मिस्चैच" के साथ शिकायत की गई। इसके अलावा, wrapByteArray() एक म्यूटेबल इंडेक्सडैक [बाइट] वापस करने लगता है, अपरिवर्तनीय संस्करण नहीं। –