JNI java中String,byte[]与c中char*转换

JNIEXPORT jbyteArray JNICALL
Java_com_nodepp_smartnode_utils_Utils_encrypt(JNIEnv *env, jobject instance, jbyteArray data_,jbyteArray key_) {
//    LOGD("--------_encrypt--------------");
    char *data = (char *) (*env)->GetByteArrayElements(env, data_, NULL);//string转char*
    char *key = (char *) (*env)->GetByteArrayElements(env, key_, NULL);
    int in_len = (*env)->GetArrayLength(env, data_); // byte数组的长度
    int out_len = in_len+32;
    char *data_out = (char *)malloc(out_len* sizeof(char));
    int encryp_code = xxtea_encrypt(data, in_len, key, data_out, &out_len);
    jbyteArray result = (*env)->NewByteArray(env, out_len);
  //char*转java的byte[]
    (*env)->SetByteArrayRegion(env, result, 0, out_len, (jbyte *) data_out);
    (*env)->ReleaseByteArrayElements(env, data_, data, 0);
    free(data_out);//记得释放内存
    return result;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,027评论 19 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,948评论 0 38
  • // com.adobe.flash.listen settings.gradle 定义项目包含那些模块app.i...
    zeromemcpy阅读 1,663评论 0 1
  • 前注:猪刚鬣,法号悟能,唐僧二徒弟,会三十六天罡变化,持上宝沁金耙,前世为掌管八万水军的天蓬元帅。威风凛凛一时无二...
    某人李下阅读 1,624评论 9 5
  • 减肥是女孩子一生的事业 对应这句话有两个现象—— 1.因为发现自己胖了于是开始不吃晚餐不吃早餐不吃各种餐哇塞好像瘦...
    柴桑阅读 1,946评论 19 28