Monday 15 April 2013

java - What does (float)(par4 >> 16 & 255) / 255.0F; mean? -


मुझे कोड की यह रेखा मिली: this.red = (float) (par4 & gt; & gt; 16 & amp; 255) / 255.0 एफ; जहां लाल को float के रूप में घोषित किया गया है।

मैं यह समझने की कोशिश कर रहा हूं कि यह क्या करता है, खासकर क्योंकि पूर्ण कोड है: < / P>

  this.red = (फ्लोट) (पैरा 4>> 16 & amp; 255) / 255.0F; This.blue = (फ्लोट) (पैरा 4 & gt; 8 & amp; 255) / 255.0F; This.green = (फ्लोट) (पैरा 4 और 255) / 255.0 एफ; This.alpha = (फ्लोट) (पैरा 4 & gt; 24 & amp; 255) / 255.0F; GL11.glColor4f (यह.red, this.blue, this.green, this.alpha);   

तो मैं यह अनुमान लगा रहा हूं कि किसी भी तरह से रंग पाठ के लिए किसी int ( par4 ) के विभिन्न स्थानों का उपयोग करता है। par4 इस मामले में 553648127 के बराबर है।

उन चार लाइनों का क्या अर्थ है, विशेषकर & gt; & gt; 16 & amp; आरबीजी अल्फा चैनल (आमतौर पर या एआरजीबी के रूप में जाना जाता है) चार बाइट्स पैक किए जाते हैं।

  एएएएएएएएएएआरआरआरआरआरआरआरबीबीबीबीबीबीबीबीजीजीजीजीजीजीजी / मूल पैरा 4, प्रत्येक चार एक बिट का प्रतिनिधित्व करते हैं। // जहां एआरबीजी अल्फा, लाल, नीला और हरा बिट के लिए खड़ा है।   

शिफ्ट और ऑपरेटर प्रत्येक व्यक्तिगत बाइट को पुनः प्राप्त करने के लिए उपयोग किया जाता है। उदाहरण के लिए, par4 & gt; & gt; 16 & amp; 255 पूर्णांक 16 बिट्स को सही स्थानांतरित कर रहा है जैसे कि मूल 3 बाइट आधार पर स्थित है, और 255 को केवल एक बाइट निकालने के लिए मुखौटा के रूप में परोसा जाता है। < P> और par4 & gt; & gt; 16 मूल बाइट 16 बिट्स को सही स्थानांतरित कर देगा;

  0000000000000000 एएएएएएएएएआरआरआरआरआरआर   

अंत में, और 255 , जो 00000000000000000000000011111111 बिट-प्रतिनिधित्व में है, पिछले 8 बिट्स को मुखौटा देगा:

  0000000000000000AAAAAARRRRRRR & amp; 00000000000000000000000011111111 = 00000000000000000000000000RRRRRRR   

इससे आपको लाल बाइट मिलती है।

No comments:

Post a Comment