c#
[c#/wpf/unity/winform]byte를 object(class 객체)로 object를 byte로 변환하기
개발자 고포고
2021. 11. 17. 14:24
반응형
[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 #변환
반응형