티스토리 뷰

반응형

[c#/wpf/unity]byte를 object(class 객체)로 object를 byte로 변환하기

 

udp 통신이나, tcp통신을 포함한 통신 및 패킷을 주고받다보면 객체를 byte화하여 정보를 주고 받는 일이 빈번하다.

그럴경우 손쉽게 객체를 byte화하여 serialize/deserialize 처리를 할 수있다.

 

public static object ByteToObject(byte[] buffer)
        {
            try
            {
                using (MemoryStream stream = new MemoryStream(buffer))
                {
                    BinaryFormatter binaryFormatter = new BinaryFormatter();
                    stream.Position = 0;
                    return binaryFormatter.Deserialize(stream);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
            }
            return null;
        }

        public static byte[] ObjectToByte(object obj)
        {
            try
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    BinaryFormatter binaryFormatter = new BinaryFormatter();
                    binaryFormatter.Serialize(stream, obj);
                    return stream.ToArray();
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
            }
            return null;
        }

 

이렇게하면 손쉽게 파싱이 되는데 다만 serialize를 통한 동기화가 진행되야하기때문에 클래스 객체에 [serialize]만 붙여주면된다.

 

 [Serializable]
    class tb_common
    {
        public string name { get; set; }
        public string code { get; set; }
    }

이런식으로 붙여줘서 통신하면 손쉽게 해결이된다.

 

#c# #winform #unity #serialze #deserialize #object #class object #byte #bytetoobject #objecttobyte #변환

반응형
댓글
반응형