2011-01-28 23 views
11

Tôi có một số dữ liệu trong các biến số int trong Java (nằm trong khoảng từ 0 đến 64000). Làm thế nào để chuyển đổi sang byte số nguyên này? Tôi chỉ cần hai byte thấp hơn từ int (phạm vi là ok). Làm thế nào để trích xuất này?Nhận hai byte thấp hơn từ biến int

Trả lời

22

Bạn có thể lấy byte thấp nhất từ ​​số nguyên bởi ANDing với 0xFF:

byte lowByte = (byte)(value & 0xFF); 

này hoạt động vì 0xFF có zero bit ở khắp mọi nơi trên các byte đầu tiên.

Để có được thứ hai thấp nhất-byte, bạn có thể lặp lại thủ thuật này sau khi chuyển xuống tất cả các bit trong các điểm số 8:

byte penultimateByte = (byte)((value >> 8) & 0xFF); 
+2

1 mặc dù nó không phải là một thủ thuật, nó được gọi là "thay đổi số học" ;-) –

3

Bạn không cần phải làm và hoạt động để có được giá thấp hơn byte chỉ đưa nó vào byte và nhận byte thấp hơn trong biến byte.

thử sau đây cả hai sẽ cung cấp cho bạn kết quả tương tự

short value = 257; 
System.out.println(value); 
byte low = (byte) value; 
System.out.println("low: " + low); 
byte high = (byte)(value >> 8); 
System.out.println("high: " + high); 

value = 257; 
System.out.println(value); 
low = (byte) (value & 0xFF); 
System.out.println("low: " + low); 
high = (byte) ((value >> 8) & 0xFF); 
System.out.println("high: " + high); 

hoặc thử nó trên Ideone.com