Tôi đang cố gắng chuyển đổi một jbyteArray thành chuỗi c gốc (char *) trong jni? Rất tiếc, tôi không thể tìm thấy bất kỳ tài liệu nào về cách thực hiện điều đó. Tôi đang gọi một hàm java với nguyên mẫu sau trong mã c.Làm thế nào để chuyển đổi jbyteArray thành char bản địa * trong jni?
public static byte[] processFile(byte[] p_fileContent)
Trong mã c tôi đang gọi hàm này trả về mảng byte. Nội dung của mảng byte này là một chuỗi java. Nhưng tôi cần phải chuyển nó thành chuỗi c.
jbyteArray arr = (jbyteArray) env->CallObjectMethod(clsH, midMain, jb);
printf("%s\n", (char*) arr);
Liên kết của bạn bị hỏng. Vui lòng cập nhật. –
@DRH Cập nhật liên kết 1.4.2 đến liên kết 1.5 không có nhiều cải tiến. – EJP
Cẩn thận sẽ không chấm dứt. Nói chung, nội dung tập tin sẽ không bị vô hiệu hóa; Các hàm chuỗi C (++) có thể bị nghẹt thở. Để làm việc xung quanh một cách đáng tin cậy, bạn phải sao chép các byte của tệp vào bộ đệm lớn hơn một byte và đặt byte cuối cùng thành 0 –