首页 > 解决方案 > UTF-16 字符串压缩实现

问题描述

C语言/压缩算法菜鸟在这里,提前道歉。

我正在研究基于 Lempel-Ziv 的 utf-16 字符串压缩算法,如此处所述http://www.unicode.org/notes/tn31/

根据实现(https://www.unicode.org/notes/tn31/#Performance),一个 1014 字节的字符串应该被压缩到大约 560(大约 60%)。

但是我下载了示例 c ( https://www.unicode.org/notes/tn31/utf16_compressor.tar.gz ) 代码并测试了压缩长度为 1290 的字符串(我添加了一个打印语句来打印输入和输出长度)但压缩后的输出长度为3018。是我遗漏了什么还是我误解了输出长度?从代码来看,压缩函数的输出缓冲区是一个无符号字符(1 字节)数组,因此意味着 3018 实际上是 3018 字节?

标签: ccompressionunicode-stringlempel-ziv-76

解决方案


推荐阅读