我試圖做一個循環,將recurse通過字節數組,並將它們與數組中的下一個(大概使用循環遍歷每個條目)。如果兩者是相同的,我需要它增加一個int變量,然後繼續。如果兩者不一樣,則需要將int變量添加到列表中,然後再添加自己的字節值,然後需要「採用」這個新值作爲自己的值,然後重新開始整個過程直到數組結束。它是一個非常奇怪的事情,但它需要這樣做,所以我可以按正確的順序和正確的值將int/byte對寫入文件。需要幫助與奇怪的循環上的邏輯
這裏所關心的是獲取相同的連續條目數,記下它,然後轉到下一個值並重復。例如,如果我們遇到的值3與我們無關的值1相同。只要我們獲得價值3的連續條目數,我們就完成了我們的工作。
其他可能有幫助的一點。
- 字節值在這種情況下可以跨越整個範圍0-255。
- 數組大小可能高達1.5億字節,因此效率很重要。
- 預先可以訪問數組大小。
- 最後,字節數組是一個Struct中的字節變量。
我希望這是有道理的。提前致謝。
編輯:對不起,如果我以前不太清楚,也許我應該重新標題的問題。
爲了澄清,我明白我需要做什麼,而不是如何去做。所以我想我會怎樣循環這個比較,然後在我得到一個虛假的回報時換掉我比較的東西。最重要的是,當我比較可能有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;
}
}
聽起來像功課。 – Yrlec 2011-06-11 08:43:54
你爲什麼要描述代碼而不顯示它?讓事情變得更容易.... – loxxy 2011-06-11 08:46:06
我迷上了「採用新的價值作爲自己的」。更好地添加一個小的輸入和輸出樣本。和/或您的代碼到目前爲止。 – 2011-06-11 08:51:20