Tôi phải thực hiện liên lạc hai chiều giữa một hệ thống cũ và một thiết bị Android. Hệ thống kế thừa sử dụng ít thứ tự byte cuối cùng. Tôi đã thực hiện thành công phần nhận, tuy nhiên việc gửi không hoạt động.ByteBuffer Little Endian chèn không hoạt động
Strange bởi vì đối với tôi nó có vẻ rằng trục trặc lớp ByteBuffer (tôi khó có thể tin rằng)
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
byteBuffer = ByteBuffer.allocate(4);
byteBuffer.putInt(88);
byte[] result = byteBuffer.array();
Kết quả: [0, 0, 0, 88]
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
byteBuffer.order(ByteOrder.BIG_ENDIAN);
byteBuffer = ByteBuffer.allocate(4);
byteBuffer.putInt(88);
byte[] result = byteBuffer.array();
Ngoài ra kết quả giống nhau: [0, 0, 0, 88]
Tuy nhiên, nếu tôi không nhầm lẫn một số đơn đặt hàng cuối cùng sẽ trả về: [88, 0 , 0, 0]
Vì vậy, tôi đang thiếu điểm nào?
Có lẽ OP có quan niệm sai rằng 'ByteBuffer.order' tạo ra thay đổi trên toàn cầu, ảnh hưởng đến tất cả' ByteBuffer '? –
Tôi không thể tin được, nhưng tôi không thấy. Việc khởi tạo thứ hai không phải là cố ý. Tôi cần ngủ một chút. Thanks anyway, – Sandor
Điều gì có thể là lý do để có được kết quả tương tự '[88, 0, 0, 0] [88, 0, 0, 0]' trong đầu ra trong một thử nghiệm trong Android 4.2.2 thông qua Eclipse ?? – GoRoS