boolean match = ((data[0] & 0xFF) == 0xFE);
पूर्णांकों तुलना के रूप में 0xFF एक पूर्णांक है, इस अभिव्यक्ति किसी पूर्णांक पर अपने बाइटdata[0]
पैमाने और क्या एक दूसरे पूर्णांक 0xFE(254)
करने के लिए कोष्ठक के अंदर की तुलना करेंगे। जैसा कि आप कहते हैं data[0]
(byte)0xFE
है, इसे पहले पूर्णांक 0xFE
पर और 0xFE
पूर्णांक की तुलना में स्केल किया जाएगा, इसलिए यह काम करता है।
boolean match = (data[0] == 0xFE);
पूर्णांक 0xFE
करने के लिए एक बाइट तुलना: 254
data[0] = (byte) 0xFE;
एक बाइट है (इसलिए यह signed है) और इसके मूल्य -2
है।
-2
254
के बराबर नहीं है, तो यह है कि तुम क्यों एक बाइट के रूप में [0] डेटा की तुलना करना चाहिए है या पैमाने के रूप में यह यह पूर्णांक 0xFE
की तुलना से पहले एक पूर्णांक तक।
एक सरल तुलना हो सकता है
boolean match = (data[0] == (byte)0xFE);
आप किसी भी संकलक चेतावनी हो रही है? मुझे लगता है कि वे पूर्णांक अक्षर हो सकते हैं (और फिर तुलना int के रूप में की जा सकती है, सरणी में आपके नकारात्मक संख्या और सकारात्मक पूर्णांक अक्षर के साथ)। – Thilo