【问题标题】:Compression of char size integer by removing leading zeroes通过删除前导零压缩字符大小整数
【发布时间】:2015-06-17 11:05:21
【问题描述】:

我通过从整数数据中删除前导零来压缩一个 char 数组,并将它们紧紧地打包(按位不留空格)。我希望解压缩它以取回我的原始数据。数据是 8 位的,可以有从 0 到 8 的任意数量的零。我不能超过 8 位的限制来存储标志,也不能发送另一串数据,因为通信速度不可靠。我在 C 中工作,并通过计数和移位来删除零。

【问题讨论】:

  • 请拨打tour 并阅读How to Ask,了解我们对这里问题的期望。请告诉我们您已经尝试过什么,它是如何失败的,我们也许可以提供帮助。:-)
  • leading zeros from integer data...这是怎么回事?那你的分隔符是什么?
  • 分隔符为 1。它只是计算二进制数据中的前导零,然后将其移动计数以获得始终以 1 开头的输出
  • 你的描述有点不清楚。例如,您是否将{255, 0}{0, 255} 都压缩为{255}?没有任何外部数据,就无法区分两者。

标签: c binary compression


【解决方案1】:

不错的尝试,只是做了一些更正。您必须存储一个标记,该标记将为您提供原始值多长时间的线索,以便您可以将其解压缩回来。当然,月下没有新鲜事,所以你可以重复使用 VarInt 之类的东西:

https://developers.google.com/protocol-buffers/docs/encoding#varints

这是一种广泛的实践,并在多种语言的许多库中得到支持

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多