преобразовать класс в байтовый массив + C # - PullRequest
4 голосов
/ 22 апреля 2010

Как я могу преобразовать класс в байтовый массив в C #.Это управляемый код, поэтому следующий код не работает

int objsize = System.Runtime.InteropServices.Marshal.SizeOf(objTimeSeries3D);
byte[] arr = new byte[objsize];
IntPtr buff = System.Runtime.InteropServices.Marshal.AllocHGlobal(objsize);
System.Runtime.InteropServices.Marshal.StructureToPtr(objTimeSeries3D, buff, true);
System.Runtime.InteropServices.Marshal.Copy(buff, arr, 0, objsize);
System.Runtime.InteropServices.Marshal.FreeHGlobal(buff);

Спасибо

1 Ответ

13 голосов
/ 22 апреля 2010

Вы можете использовать BinaryFormatter. Обратите внимание, что ваш класс должен быть [Serializable], чтобы это работало.

private byte[] ToByteArray(object source)
{
    var formatter = new BinaryFormatter();
    using (var stream = new MemoryStream())
    {
        formatter.Serialize(stream, source);                
        return stream.ToArray();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...