unsigned char 配列を jbytearray に、jbytearray を unsigned char 配列に変換したい。
これが私がやりたいことです:
フェーズ 1)
- unsigned char data1[] を jni の jbytearray に。
- javaのjbytearrayからbyte[]へ
- base 64 エンコーディング byte[] を String に変換し、ファイルに保存します。
フェーズ2)
- 保存したファイルから文字列を読み込む
- base 64 デコード文字列から byte[]
- byte[] から jbtearray
- 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, .......};
同じになりますか?
この方法が間違っている場合、どうすればよいですか?