//private byte[] ObjectToByteArray(myOrientation obj) //{ // //if (obj == null) // // return null; // BinaryFormatter bf = new BinaryFormatter(); // MemoryStream ms = new MemoryStream(); // bf.Serialize(ms, obj); // return ms.ToArray(); //} //private byte[] ObjectToByteArray(object obj) 주석처리해도 작동됨을 확인 //{ // //if (obj == null) // // return null; // BinaryFormatter bf = new BinaryFormatter(); // MemoryStream ms = new MemoryStream(); // bf.Serialize(ms, obj); // return ms.ToArray(); //} private myOrientation ByteArrayToObject(byte[] arrBytes) { MemoryStream memStream = new MemoryStream(); BinaryFormatter binForm = new BinaryFormatter(); memStream.Write(arrBytes, 0, arrBytes.Length); memStream.Seek(0, SeekOrigin.Begin); myOrientation obj = (myOrientation)binForm.Deserialize(memStream); return(obj); }
static void Serialize(myOrientation myStructure, byte[] raw) { int rawsize = Marshal.SizeOf(myStructure); if (raw.Length != rawsize) { return; } byte[] rawdatas = new byte[rawsize]; GCHandle handle = GCHandle.Alloc(rawdatas, GCHandleType.Pinned); IntPtr buffer = handle.AddrOfPinnedObject(); Marshal.StructureToPtr(myStructure, buffer, false); handle.Free(); Array.Copy(rawdatas, raw, rawsize); }