jbytearray转c++byte数组

jbyte * arrayBody = env->GetByteArrayElements(data,0);

jsize theArrayLengthJ = env->GetArrayLength(data);

BYTE * starter = (BYTE *)arrayBody;

jbyteArray 转 c++中的BYTE[]

//jbytearray strIn

jbyte * olddata = (jbyte*)env->GetByteArrayElements(strIn, 0);

jsize  oldsize = env->GetArrayLength(strIn);

BYTE* bytearr = (BYTE*)olddata;

int len = (int)oldsize;

C++中的BYTE[]转jbyteArray

//nOutSize是BYTE数组的长度 BYTE pData[]

jbyte *by = (jbyte*)pData;

jbyteArray jarray = env->NewByteArray(nOutSize);

env->SetByteArrayRegin(jarray, 0, nOutSize, by);

jbyteArray 转 char *

char* data = (char*)env->GetByteArrayElements(strIn, 0);

char* 转jstring

jstring WindowsTojstring(JNIEnv* env, char* str_tmp)
{
 jstring rtn=0;
 int slen = (int)strlen(str_tmp);
 unsigned short* buffer=0;
 
 if(slen == 0)
 {
  rtn = env->NewStringUTF(str_tmp);
 }
 else
 {
  int length = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)str_tmp, slen, NULL, 0);
  buffer = (unsigned short*)malloc(length*2+1);
  if(MultiByteToWideChar(CP_ACP, 0, (LPCSTR)str_tmp, slen, (LPWSTR)buffer, length) > 0)
  {
   rtn = env->NewString((jchar*)buffer, length);
  }
 }
 if(buffer)
 {
  free(buffer);
 }
 return rtn;
}

下面这个没有用过,刚看到,也写进来,以后如果遇到可以验证下看。

jstring 转 char* 或者 const char*

// jstring str

const char *key = env->GetStringUTFChars(str, 0);

//jboolean isOffer

jsClient->modify(key, isOffer);

env->ReleaseStringUTFChars(str, key);

你可能感兴趣的:(array)