【发布时间】:2011-08-03 07:27:27
【问题描述】:
假设您有一个四字节整数,并且您想将其压缩为更少的字节。您可以压缩它,因为较小的值比较大的值更有可能(即,一个值的概率随其大小而降低)。您应用以下方案来生成 1、2、3 或 4 字节的结果:
请注意,在下面的描述中(位从最高有效位到最低有效位),即第一位是指最高有效位,第二位是指下一个最高有效位,等等。 .)
- 如果 n
- 如果 n>=128 且 n
- 如果 n>16,384 并且 n
- 如果 n>2,097,152 且 n
- 如果 n>=268,435,456 且 n
这个算法有名字吗?
【问题讨论】:
-
我喜欢这个!但这会破坏指针的功能......指针必须读取指向的值的第一位才能知道下一个值将在哪里......但这听起来确实不错,没听说过。跨度>
-
这个方案和UTF-8很像
-
我相信我已经看到了一个 RFC 草案,该草案提出了这种用于传输任意精度整数的方案,但我的 Google-fu 失败了。无论如何,您都不会获得专利:)
-
Michael Goldshteyn 的算法和 UTF-8 之间的区别在于后者“浪费”位以便有效地找到使用字符串的任何给定字节的字符的开头。具体来说,第一个字节之后的每个字节的格式为 10xxxxxx。
标签: compression