- 论坛徽章:
- 0
|
做测试的时候发现的一个问题,字符串拷贝后丢失了一个字节 不在头也不在尾而是中间。
在一次测试时出现 ,后面的测试再没有发现过。
sMsg是源字符串 如 123456/78
buffer0 显示字符串 3132333435363738 2F也就是‘/’没有显示
这个转码函数用了多年了 没有发现过这个问题,'/'的消失弄得我也是一头雾水,以前没有碰到过。
大家谁碰到过类似的问题么 ????
我的猜测 转码函数的问题 系统内存的问题
stM_D_P 是一个结构体 stM_D_P.sMessage 结构体里的字符串数组
memcpy(stM_D_P.sMessage,sMsg,ilength);
iLen=stM_D_P.nLength;
High_Tran_Low((char *)&stM_D_P.nLength,sizeof(short));
memcpy(sSnd_Buff,(unsigned char *)&stM_D_P,iLen);
sSnd_Buff[iLen]=0;
gsmBytes2String(sSnd_Buff,buffer0,iLen);
printf("Send_Msg 16jinzhi:[%s]\n",buffer0);
int gsmBytes2String(const unsigned char* pSrc, char* pDst, int nSrcLength)
{
char tab[]="0123456789ABCDEF"; // 0x0-0xf的字符查找表
int i = 0 ;
for (; i < nSrcLength; i++)
{
*pDst++ = tab[*pSrc >> 4]; // 输出高4位
*pDst++ = tab[*pSrc & 0x0f]; // 输出低4位
pSrc++;
}
// 输出字符串加个结束符
*pDst = '\0';
// 返回目标字符串长度
return (nSrcLength * 2);
} |
|