gpt4 book ai didi

java - 如何在java中存储unsigned short?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:02 25 4
gpt4 key购买 nike

所以通常我使用 Netty 和它的 BigEndianHeapChannelBuffer 来接收 Java 中的 unsinged short(来自 c++ 软件)。当我这样做时:

buf.readUnsignedByte(); buf.readUnsignedByte();

它返回:149 和 00。到现在为止一切都很好。因为服务器发送了 149 作为无符号短 [2 字节]。

我想接收未签名的短消息(重启我的应用程序后的 ofc),而不是这个:

buf.readUnsignedShort();

奇迹发生了。它返回:38144

下一步是检索无符号字节:短类型 = buf.readUnsignedByte();
System.out.println(类型);

它返回:1,这是正确的输出。

谁能帮我解决这个问题?我看得更深,这就是 netty 用它做的:

public short readShort() {
checkReadableBytes(2);
short v = getShort(readerIndex);
readerIndex += 2;
return v;
}

public int readUnsignedShort() {
return readShort() & 0xFFFF;
}

但是我还是想不通哪里出了问题。我希望能够读取 149。

最佳答案

您还可以从 Java DataInputStream 借用一个页面. readUnsignedShort () 实现:

public final int readUnsignedShort() throws IOException {
int ch1 = in.read();
int ch2 = in.read();
if ((ch1 | ch2) < 0)
throw new EOFException();
return (ch1 << 8) + (ch2 << 0);
}

关于java - 如何在java中存储unsigned short?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11178597/

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