gpt4 book ai didi

java - Findbugs 显示 "BIT_ADD_OF_SIGNED_BYTE"错误

转载 作者:行者123 更新时间:2023-12-02 07:22:53 25 4
gpt4 key购买 nike

我编写了以下代码,但 findbugs 显示此错误:BIT_ADD_OF_SIGNED_BYTE。我尝试了很多,但可能我没有正确理解左移的概念。

void problem() {
byte [] byteArray = {1, 2, 3, 4, 5};
int localOne = 0;
for(int i = 0; i < 4; i++) {
localOne = (localOne<<8) + byteArray[i];
}
}

最佳答案

您正确地进行了转换,您的(可能的)错误是在将带符号的byte添加到int时出现的错误

由于符号扩展,您需要执行以下操作:

localOne = (localOne<<8) + (0xFF & byteArray[i]); 

假设您有字节 80(十六进制),即 1000 0000(二进制),这是 -128(十进制),因为的补码表示。现在,当将其添加到 int 时,它首先会转换为 int。生成的 int不是

0000 0000  0000 0000  0000 0000  1000 0000

(二进制)它将是

1111 1111  1111 1111  1111 1111  1000 0000

(二进制)因为符号扩展。要获得第一个,您必须按位应用 0xFF ,这就是二进制:

0000 0000  0000 0000  0000 0000  1111 1111

关于java - Findbugs 显示 "BIT_ADD_OF_SIGNED_BYTE"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13969664/

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