Java 如何使用输入流读取无符号短整型?

标签 java unsigned-integer

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/

相关文章:

java - 使用castor将xml转换为java对象

java - Cassandra drop keyspace 在给executeAsync指定的超时之前抛出超时异常

java - Scala 的数值库

java - 使用动态调用作为 jpa 调用的标准

java - 将无符号整数值插入字节缓冲区,保持二进制表示形式

关于无符号和整数表达式的混淆

c - 如何在 C 中生成随机 64 位无符号整数

将枚举定义转换为无符号整数

java - 有没有办法像在 Eclipse 中一样将 .jar 库添加到 Android Studio?

javascript - Javascript 中的无符号 32 位整数