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이상을 초과했다고 보고할 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(원본) JNI 포인터 호출 순서를 알 수 없음JNI에서 바늘을 얻는 순서를 잘 모르겠어요. 다음은 전송된 바늘의 순서에 따라 코드가 뛰자마자 붕괴된다.다음과 같습니다. 이후 포인터를 받는 순서를 살짝 수정한 후 달려갈 수 있었다.다음과 같습니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.