我正在尝试创建一个循环,它将通过一个字节数组进行递归,然后将它们与数组中的下一个进行比较(可能是使用for循环迭代每个条目)。如果两者相同,我需要它增加一个int变量然后继续。如果两者不相同,则需要将int变量添加到列表后跟其自己的字节值,然后它需要“采用”这个新值作为它自己的值并重新开始整个过程,直到数组结束。这是一个非常奇怪的事情,但它需要以这种方式完成,因此我可以按正确的顺序将int / byte对写入文件并使用正确的值。
这里的关注点是获取相同的连续条目数,记下它,然后转到下一个值并重复。例如,如果我们遇到的值3与我们无关的值1相同。只要我们获得值为3的连续条目数,我们就完成了我们的工作。
其他一些可能有用的要点。
我希望这是有道理的。提前谢谢。
编辑:对不起,如果我之前不太清楚,也许我应该重新标题这个问题。为了澄清,我明白我需要做什么,而不是如何去做。所以我想问的问题是如何循环这个比较,然后在我得到错误的回报时换掉我正在比较的东西。最重要的是,当我比较的内容可能有255个值且我不知道它们时,我该怎么做呢。我真的无法想象如何对此进行编码,所以我只是一直坐在那里盯着VS:)
这有没有更好的意义?如果不是我道歉:)
编辑2:如果有人关心的话,这是我想出的最终结果。它的灵感来自下面的aligray代码。
int count = 0;
byte previous = tiles[0].TileTypeId;
List<int> typeCount = new List<int>();
List<byte> type = new List<byte>();
for (int i = 0; i < worldSize; i++)
{
byte current = tiles[i].TileTypeId;
if (previous == current)
{
count++;
}
else
{
typeCount.Add(count);
type.Add(previous);
previous = current;
count = 1;
}
}
答案 0 :(得分:1)
如果我正确理解了这个问题,希望这会让你开始:
int count = 0;
byte previous = byteArray[0];
List<int> list = new List<int>();
for (int i = 1; i < byteArray.Length; i++)
{
byte current = byteArray[i];
if (previous == current)
{
count++;
}
else
{
list.Add(count);
list.Add(Convert.ToInt32(current));
}
previous = current;
}