因項目需要用java.nio.ByteBuffer,更确切地說,是DirectBuffer作為Java-c/c++之間的資料傳輸載體,然後就被大小尾端的問題折騰了好久。。
ByteBuffer中可以在Java端設定目前Buffer的大/小尾端屬性,預設是大尾端的,但修改該屬性傳回的新的ByteBuffer隻是修改了該類的一個成員值,并不對其中存放的實際資料做任何改變,是以在沒有發現有新的方法前,隻能在Native端用bytearray存放ByteBuffer中的資料,然後逐一轉換了。。
各種資料格式的轉換參見以下代碼。至于bytearray到float/double類型的轉換,會涉及到reinterpret_cast,有待進一步研究~~
Ref:http://fire11.iteye.com/blog/1029925