वास्तव में मैं हाल ही में बाइट्स के साथ काम कर रहा हूं और वे परेशान हो सकते हैं। वे थोड़ी सी उत्तेजना पर इनट्स में अप-कन्वर्ट करते हैं और एक संख्या को बाइट में बदलने के लिए कोई पदनाम नहीं है - उदाहरण के लिए, 8 एल आपको एक लंबा मूल्य 8 देगा, लेकिन बाइट के लिए आपको कहना होगा (बाइट) 8
उस पर, वे (बहुत ज्यादा) हमेशा आंतरिक रूप से इनट्स के रूप में संग्रहीत किए जाएंगे जबतक कि आप एक सरणी का उपयोग नहीं कर रहे हैं (और शायद तब भी .. सुनिश्चित नहीं)।
मुझे लगता है कि वे बहुत अधिक मानते हैं कि बाइट का उपयोग करने का एकमात्र कारण i/o है जहां आपको वास्तव में 8 बिट्स की आवश्यकता होती है, लेकिन आंतरिक रूप से वे आपको हमेशा इनट्स का उपयोग करने की उम्मीद करते हैं।
वैसे, एक बाइट बदतर क्योंकि यह हमेशा नकाबपोश हो गया है प्रदर्शन कर सकते हैं ...
कम से कम मैं पढ़ रहा है कि साल पहले, अब तक बदल गया होगा याद है।
अपने विशिष्ट प्रश्न के लिए एक उदाहरण जवाब के रूप में, यदि एक समारोह (च) एक बाइट ले लिया, और आप दो बाइट्स था (B1 और B2), तो:
f(b1 & b2)
काम नहीं है, क्योंकि बी 1 & बी 2 एक int में परिवर्तित हो जाएगा, और int स्वचालित रूप से नीचे परिवर्तित नहीं किया जा सकता है (परिशुद्धता का नुकसान)। तो आपको कोड करना होगा:
f((byte)(b1 & b2))
जो परेशान हो जाएगा।
और पूछना परेशान न करें कि क्यों बी 1 & बी 2 अप-कनवर्ट्स - मैं हाल ही में उस पर थोड़ा सा चिल्ला रहा हूं!
स्रोत
2009-09-11 00:52:42
आपको केवल 0x7F से बड़े मानों को डालना होगा, क्योंकि बाइट्स पर हस्ताक्षर किए गए हैं। इसके बारे में परेशान कुछ भी नहीं है। यह हस्ताक्षरित/हस्ताक्षरित चार का गुच्छा होने से कहीं ज्यादा बेहतर है। आईडीई का प्रयोग करें, यह टाइप सुरक्षा की जांच करेगा और आपके लिए कलाकार डालेगा। मास्क ऑपरेशन एक निर्देश है, यह प्रदर्शन को प्रभावित नहीं करता है। –