마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

JNI 관련 궁금한점이있습니다.

0 추천
jintArray buf_dec = (*env)->NewIntArray(env, size); // 사이즈를 통해 아웃풋할 새로운 버퍼 생성
 
jint *o_arr = (*env)->GetIntArrayElements(env, buf_src, NULL); // 입력받은 버퍼를 포인터로 정의 (변수 계산을 위해)
jint *n_arr = (*env)->GetIntArrayElements(env, buf_dec, NULL); // 아웃풋할 버퍼에 넣을 포인터로 정의한다
 
 
 
jint j =0;
int n;
 
 
for (i=0; i<cy; i++) {
                  for(j=0; j<cx; j++) {
 
  n_arr[cx*i + j]= o_arr[cx*i + j] +100;
 
                              }
}
 
 
(*env)->ReleaseIntArrayElements(env, buf_src, o_arr, 0);   // oarr 포인터값을 인풋한 buf에 넣고 프리한다.
(*env)->ReleaseIntArrayElements(env, buf_dec, n_arr, 0); // narr 포인터값을 아웃풋할 newbuf에 입력한고 free한다
 
return buf_dec;
 
지금 이렇게 코딩을 하고  이제 buf-dec를 불러와서 출력을 하면 됩니다. C안에서 계산을 하려고하는데, 주소도 이상하게 잡히고, 저 가운데 for문에 어떤식으로 수정을 해야할지 궁금해서 질문올립니다. 직접 숫자나 변수를 입력하면, 에러가 나 n_arr의 변수를 고치기위해서는 어떤식으로 바꿔야하는지 궁금합니다.
롤케이크 (160 포인트) 님이 2015년 6월 11일 질문

1개의 답변

0 추천

 n_arr[cx*i + j]= o_arr[cx*i + j] +100;

지금 직접값을 고치시는 거 맞는거 같은데요?

n_arr[cx*i +j]  에 직접 값을 대입하시고 있는....

대충 봤을때는 i는 y 좌표, j는 x 좌표 쯤이실꺼 같고 넓이는 cx인 좌표면인 듯 한데 point(x,y) 위치의 값을 변경하고 싶으신 건가요?

위 꺼를 보자면 o_arr[cx*i +j] 번쩨 값을 가져와서 100 더해서 그값을 n_arr[cx*i + j]에 넣어 주고 있는데요.

좀더 자세한 상황이나 목적을 설명해 주시지요. 현제로선 저도 이정도 밖에는 파악이 않되내요 ㅡ.ㅡ;

컴러기 (22,230 포인트) 님이 2015년 6월 12일 답변
...