【发布时间】:2016-09-26 01:00:31
【问题描述】:
我正在尝试将二维数组值转换为 byte[] 并返回到原始二维数组。运行我的代码时出现此错误:
An unhandled exception of type 'System.ArgumentException' occurred in TestProject.exe.
Additional information: Offset and length were out of bounds
for the array or count is greater than the number of elements from the
index to the end of the source collection.
这是我的代码:
byte[,] dataArray = new byte[,] {
{4, 6, 2},
{0, 2, 0},
{1, 3, 4}
};
for (int j = 0; j < 3; j++)
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine("Value[" + i + ", " + j + "] = " + dataArray[j, i]);
}
}
long byteCountArray = dataArray.GetLength(0) * dataArray.GetLength(1) * sizeof(byte);
var bufferByte = new byte[byteCountArray];
Buffer.BlockCopy(dataArray, 0, bufferByte, 0, bufferByte.Length);
//Here is where I try to convert the values and print them out to see if the values are still the same:
byte[] originalByteValues = new byte[bufferByte.Length / 2];
Buffer.BlockCopy(bufferByte, 0, originalByteValues, 0, bufferByte.Length);
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Values---: " + originalByteValues[i]);
}
错误发生在 Buffer.BlockCopy 行:
Buffer.BlockCopy(bufferByte, 0, originalByteValues, 0, bufferByte.Length);
我是字节编程/转换的新手,因此不胜感激。
【问题讨论】:
标签: c# arrays type-conversion byte buffer