我试图将2D数组值转换为byte []并返回原始2D数组。运行我的代码时出现此错误:
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);
我是使用字节编程/转换的新手,所以任何帮助都会受到赞赏。
答案 0 :(得分:2)
你使阵列太小,是你想要复制的一半大小
new byte[bufferByte.Length / 2];
似乎应该是
new byte[bufferByte.Length];