mpe*_*ter 6 java byte bytearray
我正在制作一个小型Java程序来加密任何类型的文件.我正在这样做的方法如下:我打开输入文件,在与该文件大小相同的字节数组中读取它,然后进行编码,并将整个数组写入名为output的.dat文件. DAT.要索引字节数组,我使用的是int类型的变量.代码:
for(int i : arr) {
if(i>0) {
arr[i] = arr[i-1]^arr[i];
}
}
Run Code Online (Sandbox Code Playgroud)
'arr'是一个与输入文件大小相同的字节数组.
我得到的错误:CodingEvent.java:42:错误:可能会丢失精度
arr [i] = arr [i-1] ^ arr [i];
(^运算符上的箭头点)
必需:字节
发现:int
怎么了?请问你能帮帮我吗?
结果byte ^ byte是反直觉的int.将表达式的结果分配回时,请对表达式的结果使用强制转换arr[i]:
arr[i] = (byte)(arr[i-1]^arr[i]);
Run Code Online (Sandbox Code Playgroud)
这是因为运算符被定义为对其操作数进行二进制数字提升,因此它实际上正在做的(在这种情况下)是:
arr[i] = (int)arr[i-1]^(int)arr[i];
Run Code Online (Sandbox Code Playgroud)
...自然导致int.这就是我们需要退回的原因.
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |