C# 对象二进制序列化

标签 c# string serialization binaryformatter

我想对一个对象进行二进制序列化,并将结果保存在数据库中。

Person person = new Person();
person.Name = "something";

MemoryStream memorystream = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(memorystream, person);

如何将 memorystream 转换为字符串类型以保存在数据库中,然后才能反序列化对象?

最佳答案

真正要求的是一种将任意二进制数据表示为文本然后再将其转换回来的安全方法。它存储序列化对象这一事实无关紧要。

答案几乎是使用 Base 64(例如 Convert.ToBase64StringConvert.FromBase64String )。不要使用Encoding.UTF8.GetString 或任何类似的东西 - 您的二进制数据不是编码的文本数据,不应该被这样对待.

但是,您的数据库没有二进制数据的数据类型吗?检查 BLOB、IMAGE 和 BINARY 类型...

关于C# 对象二进制序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1749044/

相关文章:

c# - UserManager.CheckPasswordAsync 与 SignInManager.PasswordSignInAsync

c++ - 为什么这样工作?我不明白这种交换的逻辑

php - 上传图片文件名不能为空错误

c# - String.Split 仅在 C# 中的第一个分隔符上?

php - __PHP_Incomplete_Class_Name 错误

json - 使用gson Grails View 序列化Map <FooCategory,List <Foo >>

c# - MySQL try-catch 无法正常工作

c# - 自 SQL 2008 升级以来,SqlDataReader.HasRows 返回 false

c# - 如何在ASP.NET Web API中使用非线程安全的异步/等待API和模式?

python - 压缩序列化 Python 数据最节省空间的方法是什么?