android jni jbyteArray转char*



今天,简单讲讲android的jni如何将java传递的


jbyteArray数组转成C++的char*。


昨天,在网上找了很多资料,最后找到了解决的代码。这里记录一下。


一.直接进行强转。

JNIEXPORT jint JNICALL Java_com_test_test_1Init
   (JNIEnv *env, jclass object, jbyteArray szLics)
 {

 char* szStr= NULL;

 szStr= (char*)(*env)->GetByteArrayElements(env, szLics, NULL);
         //然后去用szStr吧,就是对jbyteArray szLics的使用
(*env)->ReleaseByteArrayElements(env, szLics, szStr, 0);
 } 


这个我在代码里使用,发现有问题。但是网上很多人都说了这个代码,所以记录一下。


二.将jbyteArray的数据复制到一个char数组。

JNI jbyteArray转char*

char* ConvertJByteaArrayToChars(JNIEnv *env, jbyteArray bytearray)
{
  char *chars = NULL;
  jbyte *bytes;
  bytes = env->GetByteArrayElements(bytearray, 0);
  int chars_len = env->GetArrayLength(bytearray);
  chars = new char[chars_len + 1];
  memset(chars,0,chars_len + 1);
  memcpy(chars, bytes, chars_len);
  chars[chars_len] = 0;

  env->ReleaseByteArrayElements(bytearray, bytes, 0);

  return chars;
}

调用:

{

  char *pmsg = ConvertJByteaArrayToChars(env,jmsgversion);
  ...
  delete pmsg;

}


这个代码,我运行没有问题,大家可以使用。


android jni jbyteArray转char*就讲完了。


就这么简单。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值