我目前有一個鋸齒陣列Class[][][]
,我想將其作爲正常Class[]
數組序列化,然後在反序列化後轉換回Class[][][]
數組。完全可以在兩種方式之間進行轉換嗎?尺寸大小不變。將C#鋸齒陣列轉換爲數組,然後再返回
1
A
回答
2
如果你不介意的序列化扁平陣列和 int數組,你可以使用以下命令:
public static int[] JaggedSizes<T>(this T[][][] topArray)
{
List<int> rtn = new List<int>();
rtn.Add(topArray.Length);
for (int i = 0; i < topArray.Length; i++)
{
var midArray = topArray[i];
rtn.Add(midArray.Length);
for (int j = 0; j < midArray.Length; j++)
{
var botArray = midArray[j];
rtn.Add(botArray.Length);
}
}
return rtn.ToArray();
}
// Thanks @Dave Bish
public static T[] ToFlat<T>(this T[][][] jagged)
{
return jagged.SelectMany(inner =>
inner.SelectMany(innerInner => innerInner)).ToArray();
}
public static T[][][] FromFlatWithSizes<T>(this T[] flat, int[] sizes)
{
int inPtr = 0;
int sPtr = 0;
int topSize = sizes[sPtr++];
T[][][] rtn = new T[topSize][][];
for (int i = 0; i < topSize; i++)
{
int midSize = sizes[sPtr++];
T[][] mid = new T[midSize][];
rtn[i] = mid;
for (int j = 0; j < midSize; j++)
{
int botSize = sizes[sPtr++];
T[] bot = new T[botSize];
mid[j] = bot;
for (int k = 0; k < botSize; k++)
{
bot[k] = flat[inPtr++];
}
}
}
return rtn;
}
2
我不這麼認爲羅裏。
如果它是一個Class [,,]多維數組,那麼你可能已經能夠做到這一點,但是每個數組可能具有不同的長度的事實將永遠是一個絆腳石。
假設你序列化爲Class [] +另一個類來給你原來的尺寸,你會是金色的。
5
這是你可以拼合到一維結構:
var jagged = new object[][][];
var flattened = jagged.SelectMany(inner => inner.SelectMany(innerInner => innerInner)).ToArray();
至於要回多維 - 這將完全取決於它是什麼你想達到/什麼數據代表
相關問題
- 1. 將鋸齒陣列轉換爲幾個一維陣列
- 2. 編組C#鋸齒陣列到C++
- 3. 如何在C#中將double [] [](鋸齒陣列)轉換爲double [,](矩陣)
- 4. 將System :: Byte的鋸齒陣列轉換爲無符號字符**
- 5. c# - LINQ查找2D鋸齒陣列最小值,返回索引
- 6. 將鋸齒字符[] []轉換爲字符[,]?
- 7. 轉換鋸齒狀數組二維數組C#
- 8. Flex:將ArrayCollection轉換爲鋸齒字符串數組
- 9. 將JSX轉換爲JSON或字符串,然後再返回
- 10. 將WXpython位圖轉換爲圖像,然後再返回
- 11. 將錶轉換爲字符串,然後再返回
- 12. 如何將timedelta轉換爲字符串,然後再返回
- 13. 將NSString轉換爲ASCII Binary Equivilent(然後再次返回到NSString)
- 14. 鋸齒陣列與陣列陣列
- 15. 將char數組轉換爲字節數組並再次返回
- 16. 如何將int轉換爲字節數組然後返回?
- 17. C++ 11迭代鋸齒陣列?
- 18. 使用鋸齒陣列在c
- 19. F#鋸齒陣列分配
- 20. 初始化鋸齒陣列
- 21. 鋸齒陣列和異常
- 22. Excel vba:存儲陣列,嵌套數組,鋸齒陣列
- 23. 將項目添加到鋸齒陣列
- 24. C++ - 將float轉換爲unsigned char數組然後返回浮點數
- 25. C#轉換文件到Base64String,然後再返回
- 26. 將字節數組轉換爲字符串,然後再將其返回到字節數組
- 27. Python將列表轉換爲JSON,然後返回列表
- 28. 將陣列數組轉換爲矩陣
- 29. 的Java轉換INT爲十六進制,然後再返回
- 30. 字節轉換爲字符串,然後再返回
你需要以某種方式REM如果你想能夠重建原始結構,就會嵌入各種大小的鋸齒狀「比特」。 – Rawling 2012-07-19 10:47:06
當然......這是可能的。我不確定你想要這樣做的原因,將其序列化到你想存儲它的方式要容易得多(在這種情況下,你想把它作爲一個鋸齒形數組存儲)。 – 2012-07-19 11:02:43
@Ramhound我正在使用的單聲道的實現越來越困惑,當我嘗試和序列化鋸齒陣列,但似乎沒有平面陣列的問題 – RSH1 2012-07-19 11:06:04