본문 바로가기
Programming/etc

[JNI] jbyte를 C++의 vector<uchar>로 변환하는 방법

by ga.0_0.ga 2023. 3. 12.
728x90
반응형

이번 포스팅에서는 매개변수로 받은 jbyte형 변수를 C++의 vector<uchar> 자료형으로 변환하는 방법에 대해 설명하겠습니다! JNI 함수 쪽에서 아래와 같은 과정을 통해 변환해주면 됩니다.

void byte2char(
    JNIEnv *env, 
    jclass obj, 
    jbyteArray tmp){
    
    int tmp_len = env->GetArrayLength(tmp);
    unsigned char* tmpBuffer = new unsigned char[tmp_len];
    env->GetByteArrayRegion(tmp, 0, tmp_len, reinterpret_cast<jbyte*>(tmpBuffer));
    vector<uchar> newtmp(*tmpBuffer, tmp_len);

}

1. 먼저, byte형 변수의 길이가 필요합니다. env->GetArrayLength() 를 통해 가져올 수 있습니다!

2. 1에서 가져온값 만큼의 길이를 갖는 unsigned char* 변수를 선언합니다.

3. env->GetByteArrayRegion()를 이용해 2에 선언된 변수에 세팅합니다.

4. vector<uchar> 자료형으로 만들어줍니다.

728x90
반응형

'Programming > etc' 카테고리의 다른 글

[JNI] JNI 사용법 및 튜토리얼 (2)  (0) 2023.03.12
[JNI] JNI 사용법 및 튜토리얼 (1)  (1) 2023.03.11

댓글