在Java字节设置操作中以字节为符号(+/-)

Jav*_*its 2 c++ java byte char

我在Java中贬低

public byte[] orbits = new byte[38];
Run Code Online (Sandbox Code Playgroud)

现在,如果我在做

orbits[24] = (byte)0xFF;
Run Code Online (Sandbox Code Playgroud)

轨道[24]应该由11111111填充,即FF(十六进制),但它的填充为-1.

这个操作在C++中运行得很好

char orbits[38]
orbits[24] = (char)0xFF;
Run Code Online (Sandbox Code Playgroud)

如何使用byte复制Java中的类似情况?谢谢

R. *_*des 6

好吧,只是发生了-1是0xFF.一切都是正确的.byte使用二进制补码存储-128到127的值.

在Java中,没有未签名的类型.如果要使用位模式,则使用byte.在这种情况下,0xFF和-1是相同的.如果你想使用数字,即0xFF实际上是255而不是-1,那么你需要使用更大的类型,比如short.