繁体   English   中英

有效地序列化锯齿字节数组

[英]Serializing a jagged byte array efficiently

我有一个锯齿状的数组DataMember ,它返回byte[800][10000][1] ,它转换为大约8MB的数据。 使用DataContractSerializer序列化时,对于二进制文件,文件大小变为120MB,对于文本文件,文件大小变为300MB。 查看文本序列化,它表明它在每个字节值周围放置了一个标记,以指示其以base64编码的值等,这可能是此大小增大的原因。

什么是使用DataContractSerializer (或与此相关的任何其他序列化器)序列化一个大锯齿状斑点的有效方法

使用Text进行序列化时的摘要XML输出:

<a:ArrayOfbase64Binary><a:base64Binary>CQ==</a:base64Binary><a:base64Binary>Bw==</a:base64Binary><a:base64Binary>BQ==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AQ==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>BA==</a:base64Binary><a:base64Binary>Bg==</a:base64Binary><a:base64Binary>CA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary><a:base64Binary>AA==</a:base64Binary>

如果您不关心与其他系统的互操作性,而仅关注性能,则可以尝试使用BinaryFormatter

byte[800][10000][1] foo = ... fetch it
BinaryFormatter formatter = new BinaryFormatter();
using (var stream = File.OpenWrite("foobar.dat"))
{
    formatter.Serialize(stream, foo);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM