ObjectInputStream.readInt()函数是读取32位的Int型吗?如何转换到C#代码?

tossgoon 2013-04-23 09:26:45
public static void init (InputStream inputStream) throws Exception
{
ObjectInputStream in = new ObjectInputStream(inputStream);
try {
int i = 0;
while(in.available() > 0) {
.....
X[i >> 1] = in.readInt();
i++;
......
}
}
finally {
if(in != null)
in.close();
}
}
Java代码是读取一个dat流文件,用ObjectInputStream类的readInt()函数取值,我看ObjectInputStream类的readInt()的说明是读取一个32位的整数,并且将流的当前位置后移16位,是这样理解吗?
但是C#里用BinaryReader.ReadInt32(),读取的结果却是错的?那如何用C#代码实现这个功能哩?
谢谢大家。
...全文
154 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
STEEL-CHINA 2013-04-23
  • 打赏
  • 举报
回复
这是JAVA中的源代码。 public int readInt() throws IOException { if (!blkmode) { pos = 0; in.readFully(buf, 0, 4); } else if (end - pos < 4) { return din.readInt(); } int v = Bits.getInt(buf, pos); pos += 4; return v; } 读到4个位,的确是32位。 static int getInt(byte[] b, int off) { return ((b[off + 3] & 0xFF) << 0) + ((b[off + 2] & 0xFF) << 8) + ((b[off + 1] & 0xFF) << 16) + ((b[off + 0]) << 24); } 第0个字节是高位,最后一个字节是低位,C#中的,就需要楼主自己去研究的。
STEEL-CHINA 2013-04-23
  • 打赏
  • 举报
回复
引用 楼主 tossgoon 的回复:
public static void init (InputStream inputStream) throws Exception { ObjectInputStream in = new ObjectInputStream(inputStream); try { int i = 0; while(in.availa……
============================ 是不是的测试一下吧,看C和JAVA的高低位是不是相同的。
七神之光 2013-04-23
  • 打赏
  • 举报
回复
先沙发在看
tossgoon 2013-04-23
  • 打赏
  • 举报
回复
沙发十分啊,快来回答啊

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧