Java-带有无符号值的奇怪错误
|
有2个字节的数组:
专用字节[] 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为什么认为它们不相等?而且,实现此类的正确方法是什么?
没有找到相关结果
已邀请:
3 个回复
哩翔购
唤副埂侧壬
的注释正确。 除非另有标记,否则您在代码中指定的任何整数均被视为整数。 将您的断言更改为:
它应该可以通过-因为
的前两个字节将被视为
。 Bitwize Speeking-基本上,当您编写
时,编译器会将其解释为
,即
。 您要
,即is11ѭ。 在这里强制转换为字节是正确的解决方案
戊袱
例如: