Java如何使用inputstream读取无符号短代码? C++客户端发送一个字节数组到java服务器。前两个字节表示剩余字节数组的长度。客户端使用无符号短,但java中没有未签名的短。我如何读取服务器中的前两个字节?< /p> 另一个问题是,在C++中,第一个字节表示较低的8位,第二个字节表示8个高位。例如,两个字节是35个02,它转换为十进制应该是565,而不是13570。
我的java代码如下所示:Java如何使用inputstream读取无符号短代码? C++客户端发送一个字节数组到java服务器。前两个字节表示剩余字节数组的长度。客户端使用无符号短,但java中没有未签名的短。我如何读取服务器中的前两个字节?< /p> 另一个问题是,在C++中,第一个字节表示较低的8位,第二个字节表示8个高位。例如,两个字节是35个02,它转换为十进制应该是565,而不是13570。,java,unsigned-integer,Java,Unsigned Integer,我的java代码如下所示: DataInputStream dis = new DataInputStream(is); int b1 = dis.readUnsignedByte(); int b2 = dis.readUnsignedByte(); int length = (b2 << 8) | b1; DataInputStream dis=新的DataInputStream(is); int b1=dis.readUnsignedByte(
DataInputStream dis = new DataInputStream(is);
int b1 = dis.readUnsignedByte();
int b2 = dis.readUnsignedByte();
int length = (b2 << 8) | b1;
DataInputStream dis=新的DataInputStream(is);
int b1=dis.readUnsignedByte();
int b2=dis.readUnsignedByte();
int length=(b2要将无符号短字符转换为有符号整数,可以执行以下操作
int value = dis.readShort() & 0xFFFF;
您的另一个问题与字节顺序有关。我建议看一看,您可以使用order方法在上指定字节顺序。要将无符号short转换为有符号int,您可以执行以下操作
int value = dis.readShort() & 0xFFFF;
您的另一个问题与字节顺序有关。我建议看一看,您可以使用order方法在其中指定字节顺序。Err,DataInputStream.readUnsignedShort()
我不能确定它在任何情况下都是准确的
您不能测试65536个值吗?这并不困难。错误,DataInputStream.readUnsignedShort()
我不能确定它在任何情况下都是准确的
你不能测试65536个值吗?这并不难。所以,我有一个类似的问题,所以答案是-这是正确的方法。Y,这取决于endian。我尝试用C在二进制文件中编写一些结构,然后用Java读取。顺便说一句,不知道你如何用另一种方法处理它,mb有一些现成的库,可以做出更优雅的决定。我为所有基本类型创建了自己的类。thx作为您的答案。我使用了上面的代码。在我的情况下它正常工作。所以,我有一个类似的问题,所以答案是-这是正确的方式。Y,它取决于endian。我试着用C在二进制文件中编写一些结构,然后用Java读取它。顺便说一句,不知道在另一个二进制文件中如何处理它顺便说一句,有一些现成的库可以做更优雅的决定。我为所有基本类型创建了自己的类。thx作为您的答案。我使用了上面的代码。它在我的情况下正常工作。