2012-06-17 7 views
8

मेरे पास बिट्स < 8> v8 है और इसका मान "11001101" जैसा कुछ है, मैं इसे चार में कैसे परिवर्तित कर सकता हूं? मुझे एक पत्र चाहिए पत्र "एफ" = 01100110 की तरह।क्या बिट्स <8> को सी ++ में चार में परिवर्तित करना संभव है?

पीएस मदद के लिए धन्यवाद। बिट्स में यादृच्छिक त्रुटियों को चित्रित करने के लिए मुझे इसकी आवश्यकता थी। उदाहरण के लिए त्रुटि एफ के बिना, और त्रुटि में कुछ ऐसा है जैसे ♥, और इसी तरह फ़ाइल में सभी पाठों के साथ। पाठ में आप ऐसी त्रुटियों को स्पष्ट रूप से देख सकते हैं।

+1

चलो, आपने उदाहरण मान भी नहीं बदला है। –

+3

मुझे लगता है कि यह लड़का वास्तव में पूछ रहा है कि कैसे बिट्स <8> को एक सिंगल में परिवर्तित करना है, एक सरणी नहीं। –

+0

यदि मुझे प्रश्न समझा जाता है तो यह पूरे बिटसेट से एकल स्केलर चार() प्राप्त करने के बारे में है, एक सरणी – alexm

उत्तर

11
unsigned long i = mybits.to_ulong(); 
unsigned char c = static_cast<unsigned char>(i); // simplest -- no checks for 8 bit bitsets 

उपरोक्त की रेखाओं के साथ कुछ काम करना चाहिए। ध्यान दें कि बिट फ़ील्ड में एक मान हो सकता है जिसे सादे char (यह कार्यान्वित किया गया है कि यह हस्ताक्षरित है या नहीं) का उपयोग करके प्रतिनिधित्व नहीं किया जा सकता है - इसलिए आपको हमेशा कास्टिंग से पहले जांचना चाहिए।

char c; 
if (i <= CHAR_MAX) 
c = static_cast<char>(i); 
+1

नहीं है, हालांकि यदि यह 'बिट्स <8>' है, तो इसमें कोई मान नहीं होगा जिसमें 'हस्ताक्षरित' में प्रदर्शित नहीं किया जा सकता char'। तो यह 'char' से बेहतर विकल्प हो सकता है। और आप * अपने आप को कार्यान्वित प्रकारों के आउट-ऑफ-रेंज मानों के रूपांतरण के दया पर खुद को फेंक सकते हैं। –

+0

हम नहीं जानते कि सादे 'char' पर हस्ताक्षर किए गए हैं या नहीं। मैंने एक उदाहरण होने के लिए '8' माना। लेकिन मैं इसे ठीक कर दूंगा। – dirkgently

+1

बिल्कुल, यही कारण है कि मैं कहता हूं कि 'हस्ताक्षरित चार' एक बेहतर विकल्प हो सकता है, हालांकि केवल "शायद" हो सकता है क्योंकि यदि प्रश्नकर्ता को वास्तव में 'char' की आवश्यकता होती है, तो जो आपने पहले कहा वह सही है, उन्हें मूल्य की जांच करनी चाहिए। और क्यों एक उदाहरण होने के लिए '8' मानते हैं, यह केवल प्रश्न में दो बार नहीं बताया गया है, यह बिट्स में परिवर्तित करने के लिए बिटसेट का प्राकृतिक आकार है। "मैं एक बिट्ससेट <127>' char में कैसे परिवर्तित करूं "एक बहुत ही मूर्ख प्रश्न होगा ... –

संबंधित मुद्दे