Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何使用inputstream读取无符号短代码? C++客户端发送一个字节数组到java服务器。前两个字节表示剩余字节数组的长度。客户端使用无符号短,但java中没有未签名的短。我如何读取服务器中的前两个字节?< /p> 另一个问题是,在C++中,第一个字节表示较低的8位,第二个字节表示8个高位。例如,两个字节是35个02,它转换为十进制应该是565,而不是13570。_Java_Unsigned Integer - Fatal编程技术网

Java如何使用inputstream读取无符号短代码? C++客户端发送一个字节数组到java服务器。前两个字节表示剩余字节数组的长度。客户端使用无符号短,但java中没有未签名的短。我如何读取服务器中的前两个字节?< /p> 另一个问题是,在C++中,第一个字节表示较低的8位,第二个字节表示8个高位。例如,两个字节是35个02,它转换为十进制应该是565,而不是13570。

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(

我的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();
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作为您的答案。我使用了上面的代码。它在我的情况下正常工作。