函数返回值时提示Stack around the variable 'str' was corrupted
想计算一个字符串data的校验码,校验码长度为一个字节,采用CRC8,生成多项式G(x) =x^8+x^7+ x^6+x^3+1 (111001001b)
用下面的函数运行后可以得到正确的效验码,但return时提示Stack around the variable 'str' was corrupted,请高手帮忙看一下哪里出错,谢谢
unsigned char CRC8 (unsigned char *data, int len)
{
unsigned char crc = 0;
CString data1,data2;
data1.Format(_T("%s"),data);
int n=0;
unsigned char str=0;
while (len--)
{
data2=data1.Mid(2*n,2);
sscanf(data2,"%x",&str);
//str=(unsigned char *)(LPCTSTR)data2;
CRC8_calc (str, &crc);
n+=1;
}
return crc;
}
static void CRC8_calc (unsigned char value, unsigned char *crc1 )
{
unsigned char i;
for (i=8; i>0; i--)
{
if ( (*crc1 ^ value) & 1 )
{
*crc1 = ( *crc1 >> 1 ) ^ 0x93;
}
else
{
*crc1 >>= 1;
}
value >>= 1;
}
}