我想将 unsigned char 数组转换为 jbytearray 并将 jbytearray 转换为 unsigned char 数组。
这是我想做的事情:
阶段1)
- unsigned char data1[] 到 jni 中的 jbytearray。
- java中的jbytearray到byte []
- base 64 编码 byte[] 到 String 并保存在文件中。
阶段2)
- 从保存的文件中加载字符串
- base 64 解码字符串到字节[]
- byte[] 到 jbtearray
- jbytearray 到 jni 中的 unsinged char data2[]
这是我的问题:
unsigned char 的范围是 0 ~ 256
和 byte(in java) -128 ~ 127
所以,虽然 unsigned char 和 byte 之间的转换存在溢出,
phase1) data1 和 phase2) data2 是否正确且没有任何数据丢失?
在我看来,我记录了 data1 和 data2
__android_log_print("test", "data1 : %s", data1);
__android_log_print("test", "data2 : %s", data2);
他们看起来一样。
但是,我不明白它看起来如何(即使溢出)。
并假设它们是相同的,奇怪的是,在其他逻辑中有些事情进展不顺利......(Data1 用 AES 加密,我想用与 Data1 相同的方式解密 Data2)
前任。
unsigned char data1[32] = { 250, 100, 230, 120, .......};
任务阶段1)2、3和阶段2)1、2、3
unsigned char data2[32] = { 250, 100, 230, 120, .......};
会一样吗?
如果这种方式是错误的,我该怎么办?