Người ta có thể sử dụng các Buffer
s được cung cấp như một phần của java.nio
gói để thực hiện chuyển đổi.
Ở đây, byte[]
mảng nguồn có độ dài 8, là kích thước tương ứng với một long
giá trị.
Đầu tiên, byte[]
mảng được bao bọc trong a ByteBuffer
, và sau đó ByteBuffer.getLong
phương thức được gọi để nhận long
giá trị:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 0, 0, 0, 0, 4});
long l = bb.getLong();
System.out.println(l);
Kết quả
4
Tôi muốn cảm ơn dfa vì đã chỉ ra ByteBuffer.getLong
phương pháp trong các bình luận.
Mặc dù nó có thể không áp dụng được trong tình huống này, nhưng vẻ đẹp của các Buffer
s đi kèm với việc xem xét một mảng có nhiều giá trị.
Ví dụ: nếu chúng ta có một mảng 8 byte và chúng ta muốn xem nó dưới dạng hai int
giá trị, chúng ta có thể bao bọc byte[]
mảng trong một ByteBuffer
, được xem là a IntBuffer
và nhận các giá trị bằng cách IntBuffer.get
:
ByteBuffer bb = ByteBuffer.wrap(new byte[] {0, 0, 0, 1, 0, 0, 0, 4});
IntBuffer ib = bb.asIntBuffer();
int i0 = ib.get(0);
int i1 = ib.get(1);
System.out.println(i0);
System.out.println(i1);
Kết quả:
1
4