ZSTD接口封装

 工作中需要存储比较庞大的数据,需要通过压缩算法进行解压缩节约内存,存进去前压缩,读出后解压。

#include <QByteArray>
#include <zstd.h>

class ZstdHelper {
public:
    static QByteArray compress(const QString& data) {
        QByteArray input = data.toUtf8();
        size_t compressedSize = ZSTD_compressBound(input.size());
        QByteArray compressed(compressedSize, 0);

        compressedSize = ZSTD_compress(compressed.data(), compressedSize, input.constData(), input.size(), 1);

        if (ZSTD_isError(compressedSize)) {
            return QByteArray();
        }

        compressed.resize(compressedSize);
        return compressed;
    }

    static QString decompress(const QByteArray& compressedData) {
        size_t decompressedSize = ZSTD_getDecompressedSize(compressedData.constData(), compressedData.size());
        QByteArray decompressed(decompressedSize, 0);

        decompressedSize = ZSTD_decompress(decompressed.data(), decompressedSize, compressedData.constData(), compressedData.size());

        if (ZSTD_isError(decompressedSize)) {
            return QString();
        }

        return QString::fromUtf8(decompressed);
    }
};

int main() {
    QString originalData = "Hello, World!";
    
    // 压缩数据
    QByteArray compressedData = ZstdHelper::compress(originalData);
    
    // 解压数据
    QString decompressedData = ZstdHelper::decompress(compressedData);
    
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值