Sid*_*Sid 13 java java-native-interface
我想在jni中将jbyteArray转换为本机c字符串(char*)?不幸的是我找不到任何关于如何做到这一点的文档.我正在使用c代码中的以下原型调用java函数.
public static byte[] processFile(byte[] p_fileContent)
Run Code Online (Sandbox Code Playgroud)
在c代码中,我正在调用此函数,该函数返回一个字节数组.该字节数组的内容是一个java字符串.但我需要将其转换为ac字符串.
jbyteArray arr = (jbyteArray) env->CallObjectMethod(clsH, midMain, jb);
printf("%s\n", (char*) arr);
Run Code Online (Sandbox Code Playgroud)
DRH*_*DRH 19
我相信你会用GetByteArrayElements和ReleaseByteArrayElements.就像是:
boolean isCopy;
jbyte* b = GetByteArrayElements(env, arr, &isCopy);
Run Code Online (Sandbox Code Playgroud)
你应该能够施展b到char*在这一点上,以访问数组中的数据.请注意,这可能会创建数据的副本,因此您需要确保使用ReleaseByteArrayElements以下内容释放内存:
ReleaseByteArrayElements(env, arr, b, 0);
Run Code Online (Sandbox Code Playgroud)
最后一个参数是指示b应如何处理更改的模式.0表示将值复制回arr.如果您不想将数据复制回arr,请JNI_ABORT改用.
有关更多详细信息,请参阅JNI参考.
| 归档时间: |
|
| 查看次数: |
25169 次 |
| 最近记录: |