जावा में अहस्ताक्षरित बाइट्स के साथ काम करने के लिए पूरी गाइड:
(इस उत्तर के लिए स्रोत)
जावा भाषा कुछ भी प्रदान नहीं करती है unsigned
कीवर्ड की । एक byte
भाषा कल्पना के अनुसार -128 के बीच एक मूल्य का प्रतिनिधित्व करता है - 127. उदाहरण के लिए, अगर एक byte
एक करने के लिए डाला जाता है int
जावा संकेत और उपयोग के रूप में पहली बिट की व्याख्या करेगा संकेत विस्तार ।
कहा जा रहा है कि, कुछ भी आपको byte
केवल 8 बिट्स के रूप में देखने से रोकता है और उन बिट्स को 0 और 255 के बीच के मान के रूप में व्याख्या करता है। बस ध्यान रखें कि ऐसा कुछ भी नहीं है जो आप किसी अन्य की पद्धति पर अपनी व्याख्या के लिए मजबूर कर सकें। यदि कोई विधि किसी को स्वीकार करती है byte
, तो वह विधि a128 और 127 के बीच एक मान को स्वीकार करती है जब तक कि स्पष्ट रूप से अन्यथा नहीं कहा गया हो।
यहां आपकी सुविधा के लिए उपयोगी रूपांतरण / जोड़तोड़ हैं:
/ से int को बातचीत
// From int to unsigned byte
int i = 200; // some value between 0 and 255
byte b = (byte) i; // 8 bits representing that value
// From unsigned byte to int
byte b = 123; // 8 bits representing a value between 0 and 255
int i = b & 0xFF; // an int representing the same value
(या, यदि आप जावा 8+ पर हैं, तो उपयोग करें Byte.toUnsignedInt
)
पार्सिंग / प्रारूपण
उपरोक्त रूपांतरणों का उपयोग करने का सबसे अच्छा तरीका है:
// Parse an unsigned byte
byte b = (byte) Integer.parseInt("200");
// Print an unsigned byte
System.out.println("Value of my unsigned byte: " + (b & 0xFF));
अंकगणित
2-पूरक प्रतिनिधित्व "बस काम करता है" इसके अलावा, घटाव और गुणा:
// two unsigned bytes
byte b1 = (byte) 200;
byte b2 = (byte) 15;
byte sum = (byte) (b1 + b2); // 215
byte diff = (byte) (b1 - b2); // 185
byte prod = (byte) (b2 * b2); // 225
प्रभाग को संचालन के मैनुअल रूपांतरण की आवश्यकता होती है:
byte ratio = (byte) ((b1 & 0xFF) / (b2 & 0xFF));