java 从jni 读取byte数组,JNI:如何获得jbyteArray大小

Background

I'm working with byte arrays in JNI. And I can't get length of jbyteArray. I'm writing code in eclipse in Windows 7.

Java code:

private native int Enroll( byte[] pSeed );

JNI code:

In JNI I have a struct that have two members unsigned long length and unsigned char data[1]

typedef struct blobData_s {

unsigned long length;

unsigned char data[1];

} blobData_t;

Now as my JNI function get as argument jbyteArray jpSeed i want to get the length of jpSeed and set it as length member of struct.

JNIEXPORT jint JNICALL Java_com_Test_Enroll( JNIEnv* env, jobject thiz, jbyteArray jpSeed ){

blobData_t* bd = malloc( sizeof(blobData_t) );

bd->length = **Question 1**

bd->data[1] = jbyteArray;

}

Question 1: How I can get the length of jpSeed in JNI ?

Question 2: Will this code works correct bd.data[1] = jbyteArray; ?

解决方案

You can use GetArrayLength(JNIEnv* env, jbyteArray array) Read here.

Not sure what you want to do, I assume you want the content of jpSeed in bd.data[1].

Anyways, accessing the contents of a byte array, should be done with GetByteArrayElements(...).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值