-1

unsigned char 配列を jbytearray に、jbytearray を unsigned char 配列に変換したい。

これが私がやりたいことです:

フェーズ 1)

  1. unsigned char data1[] を jni の jbytearray に。
  2. javaのjbytearrayからbyte[]へ
  3. base 64 エンコーディング byte[] を String に変換し、ファイルに保存します。

フェーズ2)

  1. 保存したファイルから文字列を読み込む
  2. base 64 デコード文字列から byte[]
  3. byte[] から jbtearray
  4. jbytearray から unsinged char data2[] へ jni

これが私の質問です:

unsigned char の範囲は 0 ~ 256
および byte(Java の場合) -128 ~ 127

というわけで、unsigned char と byte の間の convert でオーバーフローはあるものの、

フェーズ 1) データ 1 とフェーズ 2) データ 2 は、データ損失なしで正しく同じですか?

私の意見では、data1とdata2を次のように記録しました

__android_log_print("test", "data1 : %s", data1);

__android_log_print("test", "data2 : %s", data2);

そしてそれらは同じように見えました。

しかし、それがどのように見えるか理解できません(オーバーフローしても)。

そして、それらが同じであると仮定すると、奇妙なことに、他のロジックで何かがうまくいかない....(Data1はAESで暗号化されており、Data2をData1と同じで復号化したい)

元。

unsigned char data1[32] = { 250, 100, 230, 120, .......};

タスクフェーズ 1) 2, 3 およびフェーズ 2) 1,2,3

unsigned char data2[32] = { 250, 100, 230, 120, .......}; 

同じになりますか?

この方法が間違っている場合、どうすればよいですか?

4

1 に答える 1

0

心配する必要はありません。基本的に、ネイティブ配列と jbyteArray の間の変換は と見なすことができますreinterpret_cast。yu が Java とネイティブの間で算術演算を混在させない限り、安全です。

于 2015-11-08T21:29:39.177 に答える