如何使用DataInputStream及其readUnsignedShort / readUnsignedByte方法查找数据包的长度。
数据包的标头是7个字节,如下所示:
TT TT SS SS SS VV
其中: TT是Type SS是大小 VV是版本
我需要找到数据包的大小,然后将它的HexBinary打印到标题中找到的给定字节。
我需要使用他的DataInputStream函数,但是如何。
谢谢!
答案 0 :(得分:0)
如果是字节:
使用readUnsignedShort()
读取3字节长度字段和版本字段以及readInt()
,并分别用移位和掩码将它们分开。
答案 1 :(得分:0)
阅读有关位移的文档:
Bitwise and Bit Shift Operators
例如,假设您显示的内容以字节表示:
int type = stream.readUnsignedShort();
int size = stream.readUnsignedShort();
size <<= 8;
size |= stream.readUnsignedByte();
int version = stream.readUnsignedByte();
可替换地:
int type = stream.readUnsignedShort();
int size = stream.readUnsignedByte();
size <<= 8;
size |= stream.readUnsignedByte();
size <<= 8;
size |= stream.readUnsignedByte();
int version = stream.readUnsignedByte();