gpt4 book ai didi

Java - 无符号值的奇怪错误

转载 作者:行者123 更新时间:2023-12-01 17:35:54 25 4
gpt4 key购买 nike

有2字节数组:私有(private)字节[] mData;

及方法:

public void setWord(final short pData) {
mData[0] = (byte) (pData >>> 8);
mData[1] = (byte) (pData);
}

我编写了简单的测试:

public void testWord() {
Word word = new Word();
word.setWord((short) 0x3FFF);

Assert.assertEquals(0x3F, word.getByte(0));
Assert.assertEquals(0xFF, word.getByte(1));
}

第二个断言失败,并显示消息“预期为 255,但实际为 -1”。我知道,0xFF 带符号的短实际上是 -1,但为什么 JUnit 认为它们不相等?那么,实现此类的正确方法是什么?

最佳答案

Java不支持无符号类型,因此为了使值成为255,它必须不是有符号字节,它无法保存255的值。0xFF常量值将被视为有符号int,为了进行比较,字节值 0xFF 也将转换为 -1 的 int。

您需要将文字 0xFF 类型转换为字节。将断言更改为 Assert.assertEquals((byte)0xFF, word.getByte(1)); 然后左侧和右侧的计算结果均为 -1。

关于Java - 无符号值的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432410/

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