gpt4 book ai didi

Java 错误 : possible loss of precision

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:14 25 4
gpt4 key购买 nike

我正在制作一个加密任何类型文件的小型 Java 程序。我这样做的方式如下:我打开输入文件,在与该文件大小相同的字节数组中读取它,然后进行编码,然后将整个数组写入名为输出的 .dat 文件。数据。为了索引字节数组,我使用了一个 int 类型的变量。代码:

        for(int i : arr) {
if(i>0) {
arr[i] = arr[i-1]^arr[i];
}
}

'arr' 是一个与输入文件大小相同的字节数组。

我得到的错误:CodingEvent.java:42: error: possible loss of precision

arr[i] = arr[i-1]^arr[i];

(箭头指向 ^ 运算符)

必需:字节

发现:整数

怎么了?你能帮帮我吗?

最佳答案

与直觉相反,byte ^ byte 的结果是 int。将表达式的结果赋值回 arr[i] 时,对表达式的结果使用强制转换:

arr[i] = (byte)(arr[i-1]^arr[i]);

这是因为运算符被定义为执行 binary numeric promotion在它的操作数上,所以它真正在做什么(在这种情况下)是:

arr[i] = (int)arr[i-1]^(int)arr[i];

...这自然会导致 int。这就是我们需要强制转换的原因。

关于Java 错误 : possible loss of precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17672906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com