我想对一个对象进行二进制序列化,并将结果保存在数据库中。
Person person = new Person();
person.Name = "something";
MemoryStream memorystream = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(memorystream, person);
如何将 memorystream 转换为字符串类型以保存在数据库中,然后才能反序列化对象?
最佳答案
您真正要求的是一种将任意二进制数据表示为文本然后再将其转换回来的安全方法。它存储序列化对象这一事实无关紧要。
答案几乎是使用 Base 64(例如 Convert.ToBase64String
和 Convert.FromBase64String
)。不要不使用Encoding.UTF8.GetString
或任何类似的东西 - 您的二进制数据不是编码的文本数据,不应该被这样对待.
但是,您的数据库没有二进制数据的数据类型吗?检查 BLOB、IMAGE 和 BINARY 类型...
关于C# 对象二进制序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749044/