मैं एक बाइट सरणी में एक बिट स्ट्रिंग लिखना चाहता हूं जैसे कि बाइट सरणी में शाब्दिक रूप से बिटस्ट्रिंग होता है

मेरे पास "10000110" मान के साथ एक स्ट्रिंग है और मैं इसे लंबाई 5 के साथ बाइट सरणी में परिवर्तित करना चाहता हूं। मैं परिणामी बाइट सरणी बिल्कुल इस बिट स्ट्रिंग को स्टोर करना चाहता हूं, इसलिए code_word_array [i] i = 0,1 के लिए 0 है, २,३ और "१००००११०" i = ४ . के लिए

byte[] code_word_array = ByteBuffer.allocate(5)
        .putInt(Integer.parseInt("10000110", 2))
        .array();

मुझे इस कोड के साथ जो मिल रहा है वह है code_word_array[i] i=0,1,2,4 के लिए 0 है और i=3 के लिए -122 है। यह मान अंतिम बाइट में संग्रहीत क्यों नहीं है?

0
Dennis 28 पद 2018, 22:02

1 उत्तर

सबसे बढ़िया उत्तर

आपके कोड में यह कहने के लिए कुछ भी नहीं है कि मान को अंतिम बाइट में संग्रहीत करने की आवश्यकता है। चूंकि बाइटबफर डिफ़ॉल्ट रूप से बड़े एंडियन का उपयोग करता है, मान चौथे बाइट में होता है।

मैं सिर्फ एक बाइट का उपयोग करूंगा []

byte[] code_word_array = new byte[5];
code_word_array[4] = (byte) Integer.parseInt("10000110", 2);

या

code_word_array[4] = 0b10000110;
0
Peter Lawrey 28 पद 2018, 22:19