将对象转换为byte []

时间:2010-08-08 15:14:11

标签: c#

无论如何

将对象(或类)转换为byte []?

像System.IO.DriveInfo到byte []?

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

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

如果类是Serializable,您可以使用BinaryFormatter来完成此操作。以下代码段可以为您提供一个开始:

http://www.digitalcoding.com/Code-Snippets/C-Sharp/C-Code-Snippet-Object-to-byte-array.html

答案 2 :(得分:0)

答案 3 :(得分:0)

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