2

我一直想在 C++ 中压缩一个字符串并将其压缩状态显示到控制台。我一直在四处寻找东西,但到目前为止找不到合适的东西。我找到它最接近的事情是:

如何使用 LZMA 简单地压缩 C++ 字符串

但是,我找不到在任何地方都可以使用的 lzma.h 标头。

基本上,我正在寻找这样的功能:

std::string compressString(std::string uncompressedString){
//Compression Code

return compressedString;
}

压缩算法的选择并不重要。任何人都可以帮我找到这样的东西吗?先感谢您!:)

4

1 回答 1

6

根据文章中的指示,我相当肯定他们正在使用XZ Utils,因此请下载该项目并使生成的库在您的项目中可用。

但是,有两个警告:

  • 将压缩字符串转储到控制台不是很有用,因为该字符串将包含所有可能的字节值,其中大部分无法在控制台上显示
  • 压缩短字符串(实际上是任何少量数据)并不是大多数通用压缩器的设计目的,在许多情况下,压缩结果将与输入一样大甚至更大。但是,我没有使用 LZMA 处理小数据量的经验,对您的用例进行数据代表的广泛测试将告诉您它是否按预期工作。

我一直在使用的一种算法可以对少量数据进行良好的压缩(在 300-500 字节大小的数据块上进行测试)是范围编码

于 2012-11-19T17:29:34.387 回答