2012-04-04 7 views
0

アンドロイドNDK Cファイルの中のcの関数にjbyte変数を渡しています。 このバイト変数をintに変換します。どうやってするか?ANdroid NDKでバイトをintに変換し直しますか?

+0

明確化を試してみてください。 JavaからCへバイト変数を渡しています。あなたのJNIコードでは、それを使いたいと思っています。単純にint x = myjnibyteを代入するのを止めているのは何ですか? – jogabonito

+0

私はjavaからjstringを渡しています。それをc内のjbyteに変換し、その変数を使用してネイティブコード内のC関数を呼び出します。 C関数はintを期待していますが、jbyteからintが必要です。 – James

+0

私はC関数が問題なくjbyteを取ると信じています。せいぜい、型キャストする必要があります。私はあなたの問題を理解していない場合は、いくつかのコードを投稿してください。表示されるエラーは何ですか? – jogabonito

答えて

0

は、あなたの質問にこの

char buf[512]; 
jint dest_size = env->GetArrayLength(ba); 
if (dest_size < sizeof(buf)) { 
jbyte* dest_data = env->GetByteArrayElements(ba, NULL); 
if (NULL != dest_data) { 
memset(buf, 0x00, sizeof(buf)); 
memcpy(buf, dest_data, (int)dest_size); 
// use buffer here 
env->ReleaseByteArrayElements(ba, dest_data, 0); 
} 
+0

構造体や共用体でないもので、メンバー 'GetArrayLength'を要求しています エラー:構造体または共用体ではないメンバー 'GetByteArrayElements'を構造体または共用体で要求しています 'ReleaseByteArrayElements'私は何かを含めるべきですか? – James

+0

jbyte * dest_data = env-> GetByteArrayElements(ba、0)を渡して試してください。 – user1203673

関連する問題