public static byte[] WriteToNDB(WDBSheet sheet) { NDBHeader header = new NDBHeader(); header.fieldCount = sheet.FieldCount; header.lineCount = sheet.LineCount; int structSize = MarshalUtility.GetStructSize(typeof(NDBHeader)); header.fieldOffset = structSize; byte[] fieldBytes = GetFieldBytes(sheet, out var lineSize); header.lineSize = lineSize; header.lineOffset = structSize + fieldBytes.Length; byte[] strBytes = GetStringBytes(sheet, out var strOffsetDic); byte[] lineBytes = GetLineBytes(sheet, strOffsetDic); header.stringOffset = structSize + fieldBytes.Length + lineBytes.Length; MemoryStream stream = new MemoryStream(); byte[] headerBytes = MarshalUtility.StructToByte(header, structSize); stream.Write(headerBytes, 0, headerBytes.Length); stream.Write(fieldBytes, 0, fieldBytes.Length); stream.Write(lineBytes, 0, lineBytes.Length); stream.Write(strBytes, 0, strBytes.Length); return(stream.ToArray());; }