gpt4 book ai didi

c# - 针对空间优化的序列化库?

转载 作者:行者123 更新时间:2023-11-30 15:38:11 24 4
gpt4 key购买 nike

有人知道在位级别上高效的序列化库(沿着 Protocol Buffer )吗?我需要通过非常昂贵的链路(租用的卫星)传输字节,并且我们需要尽可能多地打包这些字节以降低成本。

例如,我们忽略对齐:在已知值的范围(例如 0-128)的情况下,我们将其打包为 7 位,并将剩余位用于需要打包的下一个值。我们仅使用我们需要的信息而不使用其他信息来打包 DateTime 值(例如,删除年份和秒并将结果打包为 20 位)。将消息计数减少两个字节。

目前我们所有的消息都是手工制作的,这很容易出错。是否有类似于 Protocol Buffer 的东西可以打包位域并生成 C 和 C# 代码?我知道 boost 的动态位集,但这不能从 C# 中使用(很容易)。在我继续按照 this question 的答案编写一个库之前,我们可以考虑其他方法吗?

最佳答案

在这种情况下,我建议您花时间弄清楚您的数据集并制定自定义解决方案。我的推理如下。

如果您选择现成的东西,您将运行由其他人维护的良好、稳定的代码,并且您会对代码重用感到满意并在截止日期前完成。但是,如果此代码不适合您的特定需求(除非您真的很幸运),您将无法像使用自定义解决方案那样节省自己的时间。特别是因为您似乎已经找到了一种避免发送冗余信息(即日期时间戳中的年份)的方法。

一旦您了解了要发送的内容并删除了接收者可以从消息中猜测或推断出的所有信息,那么您就可以应用压缩。我会推荐一种我已经研究了几个月的压缩方法,Arithmetic Coding 。您可以通过 Michael Dipperstein here 找到实现但可能需要一些工作才能将其插入您的解决方案。可以找到该算法的非常好的描述 here in this pdf .

我给您该链接而不是一些 C# 代码的原因是,我怀疑既然您提到了卫星链接,您正在处理嵌入式系统,并且您可能正在使用 C 或 C++ 进行编码。

请注意,我对算术编码的推荐意味着我建议您在这里做很多工作。

但是,我的假设是您确实需要提高效率。通过压缩,效率来自于理解您的数据集并为其定制算法。如果您可以接受效率稍低的方法,那么还有更多通用算法......

关于c# - 针对空间优化的序列化库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com