c++ - How can I convert from DWORD RGBA to ints? -
मुझे एक DWORD (अहस्ताक्षरित लंबी) RGBA को चार int vars (R, G, B, और A) में परिवर्तित करना होगा अब तक, मुझे 4 ints को एक DWORD में कनवर्ट करने के लिए यह फ़ंक्शन है:
अहस्ताक्षरित लंबे आरजीबीए 2 डी वर्ड (इंट आईआर, इंट आईआईजी, इंट आईबी, इंट आईए) {वापसी ((आईए & lt; & lt; 24) | (आईआर & लेफ्टिनेंट; & lt; 16) | (आईजी और लेफ्टिनेंट; 8; आईबी); }
मैं इसे कैसे वापस कन्वर्ट कर सकता हूँ?
कुछ ऐसा
struct आरजीबीए {इंट आर, जी, बी, ए; }; आरजीबीए DWORD2RGBA (अहस्ताक्षरित लंबे dwColor) {स्थिर आरजीबीए टीएमपी; //....... रूपांतरण प्रक्रिया रिटर्न टीएमपी; }
किसी भी तरह की सहायता की सराहना की जाएगी! :)
धन्यवाद
अगर मैं आप थे, तो मैं गुणात्मक पैकिंग / अनपैकिंग फ़ंक्शन में अतिरिक्त संचालन कुछ ऐसा
अहस्ताक्षरित लंबे आरजीबीए 2 डी वर्ड (इंट आईआर, इंट आईजी, इंट आईबी, इंट आईए) {वापसी ((आईए * 256 + आईआर) * 256 + आईजी) * 256 + आईबी; }
एक सममित अनपैकिंग फ़ंक्शन के साथ
आरजीबीए DWORD2RGBA (अहस्ताक्षरित लंबे डीवोलोर) {आरजीबीए टीएमपी; / * आपने इसे स्थिर क्यों घोषित किया ??? * / Tmp.B = dwColor% 256; DwColor / = 256; Tmp.G = dwColor% 256; DwColor / = 256; Tmp.R = dwColor% 256; DwColor / = 256; Tmp.A = dwColor% 256; / * DwColor / = 256; * / वापसी टीएमपी; }
ध्यान दें कि पूरे कोड में केवल एक "जादू स्थिर" है
बेशक, यदि आपके पास एक बाहरी विनिर्देश है जो पैक किए गए डेटा में बिट पैटर्न के रूप में लिखा गया है, तो बिट और शिफ्ट ऑपरेशन्स के आधार पर एक संस्करण प्राथमिक हो सकता है अभी भी
अहस्ताक्षरित लंबे आरजीबीए 2 डी वर्ड (इंट आईआर, आईआईजी, आईआईटी, इंट आईए) {वापसी ((((आईए और एलटी; & lt; 8) + आईआर) & lt; & lt; 8) + आईजी) & lt; & lt; 8) + आईबी; } आरजीबीए (DWORD2RGBA) (अहस्ताक्षरित लंबे डीव कलोलर) {आरजीबीए टीएमपी; / * आपने इसे स्थिर क्यों घोषित किया ??? * / Tmp.B = dwColor & amp; 0xFF; DwColor & gt; & gt; = 8; Tmp.G = dwColor & amp; 0xFF; DwColor & gt; & gt; = 8; Tmp.R = dwColor & amp; 0xFF; DwColor & gt; & gt; = 8; Tmp.A = dwColor & amp; 0xFF; / * DwColor & gt; & gt; = 8; * / वापसी टीएमपी; }
में बहुत कम "जादू स्थिरांक" है।
अब आप मैक्रोज़ में पुन: रिपीविएक्शन / उप-प्रक्षेपण लपेट कर सकते हैं या बेहतर, इनलाइन फ़ंक्शन और बहुत कॉम्पैक्ट पहुंच सकते हैं पठनीय पैकर / अनपैकर।
Comments
Post a Comment