/// <summary>
        /// 读取变量的数据
        /// </summary>
        /// <param name="fileData">文件数据</param>
        /// <param name="variableInfo">需要读取的变量信息</param>
        /// <returns>变量的数据</returns>
        public static T[] GetVariableData <T>(byte[] fileData, MatVariableInfo variableInfo) where T : IComparable
        {
            if (fileData == null || fileData.Length == 0)
            {
                return(null);
            }

            try
            {
                IntPtr retptr   = IntPtr.Zero;
                int    datasize = 0; //返回的是byte大小
                if (CommonMethod.Is64BitVersion())
                {
                    retptr = MATGetVariableData64(fileData, fileData.Length, ref variableInfo, ref datasize);
                }
                else
                {
                    retptr = MATGetVariableData32(fileData, fileData.Length, ref variableInfo, ref datasize);
                }

                if (retptr == IntPtr.Zero)
                {
                    return(null);
                }

                //按照数据类型来拷贝返回数据
                int typesize = Marshal.SizeOf(typeof(T));
                if ((datasize % typesize) != 0)
                {
                    Marshal.FreeCoTaskMem(retptr);
                    return(null);
                }

                datasize = datasize / typesize;

                return(CommonMethod.CopyDataArrayFromIntptrAndFree <T>(ref retptr, datasize));
            }
            catch (Exception ex)
            {
                ErrorString = ex.Message;
                return(null);
            }
        }
 private static extern IntPtr MATGetVariableData64(byte[] fileData, int fileSize, ref MatVariableInfo variableInfo, ref int outDataSize);