jni对一维数组的处理

jni对java一维数组的方法比较实用的有几个

xxx具体用其他数据类型替换

byte对应char

java的char对应c++wchar

NewxxxArray新建java的一维数组

SetxxxArrayRegion用c++数组值赋值给java数组

GetArrayLength获取数组长度

GetIntArrayRegion用java数组值赋值给c++数组

    public static native int[] getIntData();
    public static native void show(int[] data);

我的建议是先把数据转成c++格式,处理完后直接复制给java数组,不要直接对java数组进行数据操作

JNIEXPORT jintArray JNICALL Java_JNITest_getIntData(JNIEnv *env, jclass thisObj){
    int tmpData[7]={1,3,5,6,7,3,4};
    //新建java数组
    jintArray data = env->NewIntArray(7);
    //把c++数组的值传给java数组
    env->SetIntArrayRegion(data,0,7,(jint *)tmpData);
    return data;
}


JNIEXPORT void JNICALL Java_JNITest_show___3I(JNIEnv *env, jclass thisObj, jintArray data){
    //获取数组长度
    int len=env->GetArrayLength(data);
    int* cData=new int[len];
    //把java数组的值赋值给c++数组
    env->GetIntArrayRegion(data,0,len,(jint *)cData);
    for(int i=0;i<len;i++){
        cout<<cData[i];
    }
    delete[] cData;
}

对于获取数组指针,然后操作java数组的方法没有给出,因为效果不如先转换格式,然后按照一种规范操作好用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值