如何在C#中将MultiDimensional数组转换为单维数组?

时间:2012-01-24 07:33:40

标签: c# marshalling

我有一个包含二进制数据的多维数组,如[3,240]:

byte[,] bData = (byte[,])objTran; // bdata is binary data with [3,240]

这意味着它有3个记录,分别来自0,239和1,239和2,239。 现在我正在编组这些数据,以便在TRANSACTIONLOGINFO结构中复制:

GCHandle handle = GCHandle.Alloc(bData, GCHandleType.Pinned);

TRANSACTIONLOGINFO ObjTranInfo = (TRANSACTIONLOGINFO)Marshal.PtrToStructure(
    handle.AddrOfPinnedObject(), typeof(TRANSACTIONLOGINFO));

handle.Free();

但每次ObjTranInfo仅显示第一个数据详细信息。如何将多维数组转换为一维数组并传递给GCHandle以逐个获取每个数据?

1 个答案:

答案 0 :(得分:1)

创建一个大小合适的单维字节数组(在您的情况下为240),并使用for循环一次一个字节地复制数据。对原始二维数组的每一行重复此操作。