【发布时间】:2016-01-18 03:42:20
【问题描述】:
我正在开发一个模仿BinaryReader.Readbytes() 方法的程序来比较我从二进制文件中提取的数据。为了测试它是否正常工作,我正在编写一个方法,该方法主要完成ReadBytes()method 的作用。它旨在从数组中读取指定数量的值,然后从上次输出值的同一索引开始,并获取指定的下几个值。
我目前的代码可以获取指定数量的值。但是,当我下次调用该方法时,它会再次从数组的开头开始。我不知道它可能哪里出错了。如果你能帮助我,那就太好了!谢谢。
代码如下:
public class TestInformationHeaderData
{
private byte[] _data;
int _index = 0;
public TestInformationHeaderData(byte[] data)
{
_data = data;
}
public byte[] getBytes(int count)
{
_index = count;
var returnArray = new byte[count];
for (int i = 0; i < count; i++)
{
returnArray[i] = _data[i];
count++;
}
_index = count;
return returnArray;
}
}
TestInformationHeaderData test = new TestInformationHeaderData(b);
byte[] byteArray = test.getBytes(3);
byte[] newByteArray = test.getBytes(1);
//Here's where it starts reading from the first value again.
【问题讨论】:
-
_index的目的是什么?看起来你从不消耗价值。 -
索引用于跟踪数组最后输出值的位置。比如说,如果在调用 getBytes(3) 时输出了数组的前 3 个值,则该索引旨在帮助在再次调用 getBytes() 方法时从数组中的位置 4 开始读取。
-
发布你如何调用方法
getBytes- 这很可能是问题的原因。 -
@vpm 这就是我的意思。您永远不会在代码中的任何位置读取
_index的值。 -
@vpm - 您需要编辑您的问题并在此处添加代码。代码没有在 cmets 中格式化。