一个关于指针++的问题
下面是7-bit编码代码,str为="Hello",输出到编辑框控件(IDC_DATA)的内容为 c8329bfd06
假如红色部分代码用蓝色的代码代替,每while循环一次,数组pDst[0]的内容都会被替换,最后只剩下 06 ,
即编辑框的内容为0600000000,请问为什么不能通过pDst++ 指针+1 来实现数据的保存?
CString str="Hello";
const char *pSrc = LPCTSTR(str);
unsigned char pDst[20];
int nSrcLength = strlen(pSrc);
int nSrc; // 源字符串的计数值
int nDst; // 目标编码串的计数值
int nChar; // 当前正在处理的组内字符字节的序号,范围是0-7
unsigned char nLeft; // 上一字节残余的数据
// 计数值初始化
nSrc = 0;
nDst = 0;
int i=0; // 删除
// 将源串每8个字节分为一组,压缩成7个字节
// 循环该处理过程,直至源串被处理完
// 如果分组不到8字节,也能正确处理
while (nSrc < nSrcLength)
{
// 取源字符串的计数值的最低3位
nChar = nSrc & 7;
// 处理源串的每个字节
if(nChar == 0)
{
// 组内第一个字节,只是保存起来,待处理下一个字节时使用
nLeft = *pSrc;
}
else
{
// 组内其它字节,将其右边部分与残余数据相加,得到一个目标编码字节
pDst[i] = (*pSrc << (8-nChar)) | nLeft; //*pDst = (*pSrc << (8-nChar)) | nLeft;
// 将该字节剩下的左边部分,作为残余数据保存起来
nLeft = *pSrc >> nChar;
// 修改目标串的指针和计数值
i++; //pDst++;
}
nDst++;
// 修改源串的指针和计数值
pSrc++;
nSrc++;
}
pDst[i] = nLeft; // *pDst = nLeft;
CString s, strs;
for(int j=0; j<nSrcLength; j++)
{
s.Format("%02x", pDst[j]);
strs += s;
}
SetDlgItemText(IDC_DATA, strs);//输出到编辑框