2010-08-08 77 views
1

有无论如何将对象(或类)转换为字节[]?将对象转换为字节[]

像System.IO.DriveInfo到byte []?

如果是的话。我怎么能不转换?

回答

1
static void Main(string[] args) 
{ 
    using (var stream = new MemoryStream()) 
    { 
     // serialize object 
     var formatter = new BinaryFormatter(); 
     var foo = new Foo(); 
     formatter.Serialize(stream, foo); 

      // get a byte array 
      // (thanks to Matt for more concise syntax) 
      var bytes = stream.GetBuffer(); 

     // deserialize object 
     var foo2 = (Foo) formatter.Deserialize(stream); 
    } 
} 

[Serializable] 
class Foo:ISerializable 
{ 
    public string data; 

    #region ISerializable Members 

    public void GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     info.AddValue("data",data); 
    } 

    #endregion 
} 
+0

你可以只抢出数组与MemoryStream的的'的GetBuffer()' – 2010-08-08 15:44:50

+0

我怎么能存储反序列化的字节[]在流? – pedram 2010-08-08 15:51:31

+0

@Matt谢谢,将更新回答 – heisenberg 2010-08-08 16:47:01

0

您可以使用BinaryFormatter将对象序列化为MemoryStream,然后从中获取字节。 BinaryFormatter也可以从byte []数组转换回对象(反序列化)。数据看起来很奇怪,但。如果这是你想要的,它与记忆图像不一样。