使用zlib压缩解压并导出lua接口

本文介绍了在网络游戏中如何利用zlib库进行数据压缩,以应对大量数据交换的问题,如游戏回放功能。通过提供C++实现的zlib压缩、解压缩函数,并详细阐述如何将这些功能导出到Lua接口,便于前后端交互。
摘要由CSDN通过智能技术生成
               


网络游戏在前后端交换的过程中,有可能会有大量的数据,比如说游戏回放功能,这时最好是将数据压缩一下。

比较简单的数据压库就是zlib了。

zlib官方文档,常用的函数都在这里了,解释很详细。


一  C++功能实现部分


下面将代码贴上来。

在ZipUtils中添加下面三个函数:

// ZipUtils.h

 <pre name="code" class="cpp">typedef struct{ unsigned str_size; unsigned buf_size; char data[];// 柔性数组}CompressedData;class ZipUtils {
        public:  // add by XuLidong  static void testFun();  static unsigned getCompressBound(unsigned len);  static bool compressString(const char* str,CompressedData* pdata);  static bool decompressString(CompressedData* pdata, char* str);};

 
 


用到了柔性数组,不动的可以参考我的另一篇文章

下面是相应的实现:


// ZipUtils.cpp

#include <zlib.h>#include <stdlib.h>#include "ZipUtils.h"int test1()char text[] = "zlib compress and uncompress test\nxulidong_china@163.com\n2012-11-05\n";   uLong tlen = strlen(text) + 1/* 需要把字符串的结束符'\0'也一并处理 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值