网络游戏在前后端交换的过程中,有可能会有大量的数据,比如说游戏回放功能,这时最好是将数据压缩一下。
比较简单的数据压库就是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'也一并处理 *