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