jni에서byte[]와char*가 서로 변환

1713 단어 jni
    id= (*env)->GetFieldID(env, objectClass, filedName, "[B");
    jbyteArray dataArray=(jbyteArray)((*env)-> GetObjectField(env,object,id));
    unsigned char* byteData[    ];
    (*env)->GetByteArrayRegion(env,dataArray,0,    ,byteData);

위 코드는 자바 대상의byte 그룹 파라미터를 C에서 사용할 수 있는char 그룹으로 변환합니다.
1、jclass 인용과 대상jobject 인용을 가져오고,
2、매개 변수 이름에 따라 jfieldID 인용을 얻습니다.
3. ID에 따라 배열 jbyteArray의 인용을 얻는다
4, C 배열 선언
5. Java 배열 데이터를 C 배열에 복사합니다.
미완성 미속.
char *pBuf 
jbyteArray data = (*jniEnv)->NewByteArray(jniEnv, length);
(*jniEnv)->SetByteArrayRegion(jniEnv, data, 0, length, pBuf);
//    
(*jniEnv)->DeleteLocalRef(jniEnv, data);
이상의 코드는 C의char 포인터 형식 데이터를 jbyteArray로 변환하는 것입니다.
1. 포인터 데이터의 길이에 따라 jbyteArray 배열 만들기
2. 할당 복제
3. 데이터를 사용하여 자바나 다른 곳으로 리셋할 수 있다
4. 로컬 인용을 삭제합니다. 이것은 국부 인용입니다. 매번 사용한 후에 유사한 국부 인용을 삭제해야 합니다.
그렇지 않으면 여러 번 집행한 후에 국부 인용이 512이상을 초과했다고 보고할 것이다.

좋은 웹페이지 즐겨찾기