
方式1
unsigned short shrCRCCheckSum = ; // 校验和
char tstCRCChecksum[];
memcpy(tstCRCChecksum,&shrCRCCheckSum,); // shrCRCCheckSum:216D
LOGI("=================>Test tstCRCChecksum[0] 低位 :%x",tstCRCChecksum[]); // 6d
LOGI("=================>Test tstCRCChecksum[1] 高位 :%x",tstCRCChecksum[]); //
方式2
unsigned short shrCRCCheckSum = 0; // 校验和
/*
* 方 法:substring()
* 功 能:截取字符串
* 参 数:char* ch :要转换的 字符串指针
* int pos :截取的开始位置
* int length:截取字符的长度
* 返回值:char* :结果字符串指针
*/
char* substring(char* ch,int pos,int length)
{
char* pch=ch;
//定义一个字符指针,指向传递进来的ch地址。
char* subch=(char*)calloc(sizeof(char),length+);
//通过calloc来分配一个length长度的字符数组,返回的是字符指针。
int i;
//只有在C99下for循环中才可以声明变量,这里写在外面,提高兼容性。
pch=pch+pos;
//是pch指针指向pos位置。
for(i=;i<length;i++)
{
subch[i]=*(pch++);
//循环遍历赋值数组。
}
subch[length]='\0';//加上字符串结束符。 return subch; //返回分配的字符数组地址。
}
//求[CRC校验和]
sprintf(chrCRCCheckSum, "%04X", shrCRCCheckSum); // shrCRCCheckSum:216D
LOGI("=================>[CRC校验和] :%s",chrCRCCheckSum); // 求得高位CRC
chrMSB = substring(chrCRCCheckSum,,); //chrMSB的值是比如是6D
char chrConverMSB;
sscanf(chrMSB, "%x", &chrConverMSB);
Cmd[] = chrConverMSB;
LOGI("=================>[高位CRC] Cmd[134] :%x",chrConverMSB); // 21 // 求得低位CRC
chrLSB = substring(chrCRCCheckSum,,);
char chrConvertLSB;
sscanf(chrLSB, "%x", &chrConvertLSB);
Cmd[] = chrConvertLSB;
LOGI("=================>[低位CRC] Cmd[2] :%x",chrConvertLSB);// 6d