2017-04-18 14 views
1

我读一个二进制文件(这是写在C#中)在Java C#VS readShort()。其长文件超过360Kb。我必须逐字节地读取代码来填充字段。 我们已经阅读了在C#中已经实现的代码,并且必须复制该行为。在C#代码是这样的readInt16()在Java中

FileVersion = s.ReadByte() 
FileVersionMinor = s.ReadByte() 
HeaderLength = s.ReadInt16() 

现在我想在java中

dis = new DataInputStream(fin); 
fileVersionMajor = dis.readUnsignedByte() 
def fileVersionMinor = dis.readUnsignedByte() 
def headerLength = dis.readShort() 

做上面一样,但我得到不同的输出,当我试图深入的问题,我看java代码在streambyte结尾附加00000000。

这里有什么问题?

PS如果我 def headerLength = dis.readByte(), 我得到期望值。

+0

有没有在java'def'关键字为C#的'var',也许你的意思斯卡拉(需要重新标记为[阶])? –

回答

0

您可能需要使用readByte()而不是readUnsignedByte()

+0

你错了,ReadByte()给出了无符号整数,例如readUnsignedByte() –