【问题标题】:.net byte[] to List<List<Point>>.net byte[] 到 List<List<Point>>
【发布时间】:2010-04-14 12:24:07
【问题描述】:

是否可以将字节数组转换回List&lt;List&lt;Point&gt;&gt;

乐: 我将 List&lt;List&lt;Point&gt;&gt; 保存在数据库 BLOB 字段中。 当我检索它时,我想将它转换回List&lt;List&lt;Point&gt;&gt;

数据保存在 SQLite 数据库中并设置为:

...
cmd.Parameters.AddWithValue("@bynaryData", theList);
...

所以我有byte[],但我不知道如何转换它。反序列化应该如何?

【问题讨论】:

  • 字节数组是什么样子的,它是如何创建的?
  • 您仍然没有包含将 List> 写入字节数组字段的代码。
  • 已更新 - 需要额外信息吗?谢谢

标签: .net list byte


【解决方案1】:

首先使用 BinaryFormatter.Serialize() 将对象序列化为 MemoryStream。 MemoryStream.GetBytes() 现在为您提供可以写入 blob 的 byte[]。读取需要反序列化从 blob 获得的 byte[],现在使用 BinaryFormatter.Deserialize()。投射到List&lt;List&lt;Point&gt;&gt;

XmlSerializer 也可以工作,只是 blob 更大。但它确实允许您将序列化值存储到 dbase 表中的 nvarchar(max) 列,而不必使用 blob。它更安全,因为它不依赖于 .NET 框架版本,如果这些数据将存在一段时间,这一点很重要。序列化为 StringStream 以获取生成的 XML 的字符串值。

最后但并非最不重要的一点是,考虑在您的数据库中添加一个可以存储积分的表。这是干净的解决方案。

【讨论】:

    【解决方案2】:

    如果字节数组最初是List&lt;List&lt;Point&gt;&gt;,然后正确序列化,那么是的。

    通过更多细节和示例代码,我们可以为您提供更准确的答案。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2017-08-07
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多