通常我使用Netty和它的BigEndianHeapChannelBuffer在Java中接收无符号短整型(来自C++软件)。当我像这样做时:
```
buf.readUnsignedByte(); buf.readUnsignedByte();
```
它返回:149和00。到目前为止一切都很好。因为服务器将149作为无符号短整型[2个字节]发送。
相比之下,我想在重新启动应用程序后接收无符号短整型:
```
buf.readUnsignedShort();
```
神奇的事情发生了。它返回:38144。
下一步是检索无符号字节:
```
short type = buf.readUnsignedByte();
System.out.println(type);
```
它返回:1,这是正确的输出。
有人能帮助我吗?
我深入调查了一下,这就是Netty对它所做的内容:
public short readShort() {
checkReadableBytes(2);
short v = getShort(readerIndex);
readerIndex += 2;
return v;
}
public int readUnsignedShort() {
return readShort() & 0xFFFF;
}
但是我仍然无法弄清楚问题出在哪里。我只想能够读取那个149。