java readshort_C#中的readInt16()与Java中的readShort()

I am reading a binary file (that was written in c#) in java. its a long file more than 360Kb. I have to read the code byte by byte to populate the fields.

we have reading code already implemented in c# and have to replicate the behavior. In c# the code is something like this

FileVersion = s.ReadByte()

FileVersionMinor = s.ReadByte()

HeaderLength = s.ReadInt16()

Now I am trying to do same as above in java

dis = new DataInputStream(fin);

fileVersionMajor = dis.readUnsignedByte()

def fileVersionMinor = dis.readUnsignedByte()

def headerLength = dis.readShort()

but I get different output, when i tried to drill down the issue, I see that java code appends 00000000 at the end of streambyte.

Whats the issue here?

PS if I do

def headerLength = dis.readByte(),

I get expected value.

Talk1:

There is no def keyword as C#'s var in Java, maybe you mean Scala (requires retag to [scala])?

Solutions1

You probably need to use readByte() instead of readUnsignedByte().

Talk1:

you are wrong, ReadByte() gives the unsigned int so as readUnsignedByte()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值