2017-04-18 8 views
1

私はJavaでバイナリファイル(c#で書かれています)を読んでいます。その360Kb以上の長いファイルです。私はコードをバイト単位で読んでフィールドに値を設定する必要があります。 すでにC#で実装されているコードを読み込み、その動作を複製する必要があります。 C#でコードがこのreadInt16()in c#vs readShort()in 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でC#の 'var'として' def'キーワードはありません。おそらくScalaを意味しているかもしれません([scala]へのretagが必要です)? –

答えて

0

おそらくreadUnsignedByte()の代わりにreadByte()を使用する必要があります。

+0

あなたは間違っていますが、ReadByte()はunsigned intをreadUnsignedByte() –