C++客户端向Java服务器发送一个字节数组。前两个字节表示剩余字节数组的长度。客户端使用unsigned Short,但java中没有unsigned Short。如何读取前两个字节在我的服务器中?
还有一个问题是,在C++中第一个字节表示低8位,第二个字节表示高8位。例如,这两个字节是35 02,转换成十进制应该是565,而不是13570。
我的java代码是这样的:
DataInputStream dis = new DataInputStream(is);
int b1 = dis.readUnsignedByte();
int b2 = dis.readUnsignedByte();
int length = (b2 << 8) | b1;
似乎可行。但我无法确定它在任何情况下都是准确的。希望您的建议。thx~
最佳答案
错误,DataInputStream.readUnsignedShort()
!
I can't make sure it is exact in any condition
您无法测试 65536 个值?这并不难。
关于Java 如何使用输入流读取无符号短整型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761840/