CString转化为unsigned char,该如何解决

CString转化为unsigned char
typedef unsigned int uint;  
typedef unsigned char uchar; //指向无符号字符的指针
uint cal_crc(uchar *byte, uchar nbyte) 
{
  uint itemp=0xFFFF;
  uchar i;
  while(nbyte--)
{
itemp ^= *byte++ << 8;
  for (i=0; i<8; i++)
{
if (itemp & 0x8000)
{
itemp <<= 1;
itemp ^= 0x1021; //定义的生成多项式0x1021
}
  else
itemp <<= 1;
}
}
return itemp;
}

  DWORD length;
  CString strTemp;
  strTemp="E0800"; //读取通道0的温度
  uint str1=cal_crc((LPTSTR)(LPCTSTR)strTemp,4); //就是要在指令后加4字符的CRC校验,类型不对?
  strcpy(strTemp,str1);//?就是这两句错
  OVERLAPPED m_osWrite;
  memset(&m_osWrite, 0, sizeof(OVERLAPPED));
  m_osWrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);  
  WriteFile(hCom,strTemp,8,&length,&m_osWrite);

------解决方案--------------------
你想多了:
CString m_SRC="中文abc";///-///源字符串
int m_int_Length=m_SRC.GetLength();
char *buff=new char[m_int_Length+1];
unsigned char *ucbuff=new unsigned char[m_int_Length];
sprtinf(buff,m_SRC,m_int_Length);
for(int i=0;i<m_int_Length;i++)
{
ucbuff[i]=(BYTE)buff[i];
}
delete [] buff;
///-///ucbuff应该就是你要的unsigned char数组,用过之后,也delete。
delete [] ucbuff;





------解决方案--------------------
C/C++ code
WORD MakeCRC(UCHAR *puchMsg, WORD usDataLen);
UCHAR SendBuf[1024];
SendBuf[0] = (UCHAR)Station ;
SendBuf[1] = 3 ;
SendBuf[2] = HIBYTE(addr) ;
SendBuf[3] = LOBYTE(addr) ;
SendBuf[4] = HIBYTE(nCount) ;
SendBuf[5] = LOBYTE(nCount) ;
nCRC = MakeCRC(SendBuf,6) ;
SendBuf[6] = HIBYTE(nCRC) ;
SendBuf[7] = LOBYTE(nCRC) ;