Ngôn ngữ Java không cung cấp bất cứ thứ gì như unsigned
từ khóa. A byte
theo đặc tả ngôn ngữ đại diện cho một giá trị trong khoảng −128 - 127. Chẳng hạn, nếu a byte
được truyền tới int
Java sẽ diễn giải bit đầu tiên là phần mở rộng dấu và sử dụng dấu .
Điều đó đang được nói, không có gì ngăn cản bạn xem byte
đơn giản là 8 bit và diễn giải các bit đó thành giá trị trong khoảng từ 0 đến 255. Hãy nhớ rằng bạn không thể làm gì để buộc bạn phải giải thích theo phương pháp của người khác. Nếu một phương thức chấp nhận a byte
, thì phương thức đó chấp nhận một giá trị trong khoảng từ −128 đến 127 trừ khi có quy định rõ ràng khác.
Dưới đây là một số chuyển đổi / thao tác hữu ích để thuận tiện cho bạn:
Chuyển đổi sang / từ 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
(Hoặc, nếu bạn đang dùng Java 8+, hãy sử dụng Byte.toUnsignedInt
.)
Phân tích cú pháp / định dạng
Cách tốt nhất là sử dụng các chuyển đổi trên:
// Parse an unsigned byte
byte b = (byte) Integer.parseInt("200");
// Print an unsigned byte
System.out.println("Value of my unsigned byte: " + (b & 0xFF));
Mỹ phẩm
Biểu diễn 2 phần bổ sung "chỉ hoạt động" để cộng, trừ và nhân:
// 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
Bộ phận yêu cầu chuyển đổi thủ công các toán hạng:
byte ratio = (byte) ((b1 & 0xFF) / (b2 & 0xFF));