c# 中的 readInt16() 与 java 中的 readShort()
Posted
技术标签:
【中文标题】c# 中的 readInt16() 与 java 中的 readShort()【英文标题】:readInt16() in c# vs readShort() in java 【发布时间】:2017-09-14 02:31:22 【问题描述】:我正在用 java 读取一个二进制文件(用 c# 编写)。它是一个超过 360Kb 的长文件。我必须逐字节读取代码以填充字段。 我们已经阅读了已经在 c# 中实现的代码,并且必须复制该行为。在c#中,代码是这样的
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()
,
我得到了预期值。
【问题讨论】:
在Java中没有def
关键字作为C#的var
,也许你的意思是Scala(需要重新标记到[scala])?
【参考方案1】:
您可能需要使用readByte()
而不是readUnsignedByte()
。
【讨论】:
你错了,ReadByte() 给出了 unsigned int 所以 readUnsignedByte()以上是关于c# 中的 readInt16() 与 java 中的 readShort()的主要内容,如果未能解决你的问题,请参考以下文章
Java.io.DataInputStream.readInt()