मुझे बिटसेट से बाइट्स निकालने की आवश्यकता है जो (नहीं) में CHAR_BIT बिट्स का एक से अधिक हो सकता है। अब मैं बिसेट में कितने बिट्स को एक सरणी में डालना चाहता हूं। उदाहरण के लिए,मैं बिट्सट को बाइट्स/uint8 की सरणी में कैसे परिवर्तित करूं?
बिट्स सेट घोषित किया जाता है के रूप में std::bitset < 40> id;
एक अलग चर nBits
id
में कैसे बिट्स के कई प्रयोग करने योग्य हैं। अब मैं उन बिट्स को CHAR_BIT के गुणकों में निकालना चाहता हूं। मुझे उन मामलों की देखभाल करने की भी आवश्यकता है जहां nBits % CHAR_BIT != 0
। मैं इसे uint8
हर्ष ... यदि आपके पास आकार (हस्ताक्षर किए गए लंबे) बिट्स से कम था, तो यह 'बिट्ससेट :: to_ulong' का उपयोग करके सीधा होगा। जैसा कि है, मुझे नहीं लगता कि एक सरल समाधान है। 'std :: bitset' में' std :: vector' के रूप में 'डेटा()' जैसे कुछ नहीं है (हालांकि जीसीसी संस्करण में एक अनियंत्रित और प्रयोगात्मक '_M_getdata' फ़ंक्शन है जो कि ...)'। चूंकि कोई अन्य चीज नहीं है, इसलिए आप अलग-अलग बिट्स को अलग-अलग एक्सेस कर सकते हैं। या, एक स्ट्रिंग को क्रमबद्ध करें या स्ट्रीम के माध्यम से जाएं, लेकिन इनमें से कोई भी विशेष रूप से कुशल नहीं है। – Damon