Tôi cần chuyển (trực tiếp) ByteBuffer
đến các hàm gốc sẽ đọc/ghi từ/vào bộ đệm. Khi các hoạt động này được hoàn thành, tôi muốn truy cập vào ByteBuffer
từ mã Java bằng cách sử dụng các chức năng thông thường; cụ thể, limit()
và position()
phải phản ánh trạng thái hiện tại của bộ đệm.Thao tác ByteBuffer từ JNI
Kể từ JNI sẽ sử dụng GetDirectBufferAddress()
để truy cập trực tiếp bộ đệm cơ bản, tôi giả sử tôi nên gọi flip()
/limit()
/position()
sau khi tôi thực hiện đọc/ghi. Tuy nhiên, tôi đã không thể thực hiện công việc này. Ví dụ, sau khi tôi đọc một vài byte vào bộ đệm từ C, và thiết lập giới hạn và vị trí của nó cho phù hợp, tôi không thể truy vấn những byte đó từ Java; Ý tưởng của Java về giới hạn và vị trí bộ đệm không nhất quán với những gì tôi đã làm trong mã C.
Ai có thể chỉ cho tôi một ví dụ làm việc về điều này không? Cảm ơn trước.
Nên hoạt động, đó là toàn bộ ý tưởng. Bạn đặt giá trị vị trí và giới hạn, cách thức và giá trị nào cho chúng bạn thấy trong Java? – EJP