如何在C#中將int [,]轉換爲byte []? 一些代碼可以理解的如何在C#中將int [,]轉換爲byte []#
編輯:
我需要一個函數來執行以下操作:
byte[] FuncName (int[,] Input)
如何在C#中將int [,]轉換爲byte []? 一些代碼可以理解的如何在C#中將int [,]轉換爲byte []#
編輯:
我需要一個函數來執行以下操作:
byte[] FuncName (int[,] Input)
由於你的問題中的細節很少,我只能猜測你想做什麼......假設你想「fla tten」 INTS的二維數組轉換成字節的一維數組,你可以做這樣的事情:
byte[] Flatten(int[,] input)
{
return input.Cast<int>().Select(i => (byte)i).ToArray();
}
注意調用Cast
:這是因爲多維數組實現IEnumerable
但不IEnumerable<T>
這似乎是你錯了寫類型,但這裏是你可能會尋找for:
byte[] FuncName (int[,] input)
{
byte[] byteArray = new byte[input.Length];
int idx = 0;
foreach (int v in input) {
byteArray[idx++] = (byte)v;
}
return byteArray;
}
我會猜測「最有可能是他的目標」。 – 2010-07-23 21:36:11
我的速度更快! – mquander 2010-07-23 21:36:43
@mquander是真的,但我的似乎符合他的需求。 – 2010-07-23 21:57:02
的BitConverter轉換原始類型轉換爲字節數組:
byte[] myByteArray = System.BitConverter.GetBytes(myInt);
您似乎想要將2維數組的整數轉換爲字節。將BitConverter與必要的循環結構(例如foreach)以及您想要組合數組維度的任何邏輯組合起來。
這裏的和實現,假設你正在試圖序列化;不知道這是不是你想要的;它以尺寸爲前綴,然後使用基本編碼的每個單元格:
public byte[] Encode(int[,] input)
{
int d0 = input.GetLength(0), d1 = input.GetLength(1);
byte[] raw = new byte[((d0 * d1) + 2) * 4];
Buffer.BlockCopy(BitConverter.GetBytes(d0), 0, raw, 0, 4);
Buffer.BlockCopy(BitConverter.GetBytes(d1), 0, raw, 4, 4);
int offset = 8;
for(int i0 = 0 ; i0 < d0 ; i0++)
for (int i1 = 0; i1 < d1; i1++)
{
Buffer.BlockCopy(BitConverter.GetBytes(input[i0,i1]), 0,
raw, offset, 4);
offset += 4;
}
return raw;
}
這使得我的頭很難受。你需要指定更多的東西 - 更重要的是我甚至無法列出所有東西!讓我們從「你試圖解決什麼問題到底是什麼?」開始吧。 – 2010-07-23 21:26:12
添加了一些更多的細節。 – mouthpiec 2010-07-23 21:31:02
什麼是'[,] int'和'[] byte'應該是什麼意思?這在C#中不存在,你可能是指'int [,]'和'byte []'... – 2010-07-23 21:31:29