//解压缩序列的问题
char *pbExpend(char *pbFrom, char *pbTo, size_t sizeFrom)
{
char b, *pbEnd;
size_t size;
assert(pbFrom != NULL && pbTo != NULL && sizeFrom != 0);
pbEnd = pbFrom + sizeFrom;
while (pbFrom < pbEnd)
{
b = *pbFrom++;
//e.g. 5个x压缩成1个的表示法
//bRepeatCode x 5
if (b == bRepeatCode)
{
b = *pbFrom++;
size = (size_t)*pbFrom++;
//当原始数据中出现bRepeatCode字符的处理
//bRepeatCode bRepeatCode 1
assert(size >= 4 || (size == 1 && b == bRepeatCode));
while (size-- > 0)
{
*pbTo = b;
}
}
else
{
*pbTo = b;
}
}
//因为循环中 pbFrom 并不是每次只加1
//而这里的断言只是起到报警的作用
//因为可能有这中情况
//数据缓冲区的最后一个字节碰巧是 bRepeatCode
assert(pbFrom == pbEnd);
return *pbTo;
}
错误报警
最新推荐文章于 2021-01-05 14:30:25 发布