vc中把字符串转换成16进制数的函数(如'7f'->0x7f)

来源:互联网 发布:图片特效制作软件 编辑:程序博客网 时间:2024/05/16 06:59
/*------------------------------------------------------------  
   
      函数名   :   TransData(CString   InStr,   PUCHAR   OutStr)  
   
      功     能   :   将字符串转换成十六进制数据  
   
      参     数   :   CString   InStr   [in]   输入字符串  
   
      PUCHAR   OutStr   [out]   输出转换后数据的指针  
   
      返回值   :   BOOL,正确返回TRUE,错误返回FALSE  
   
  ------------------------------------------------------------*/  
  BOOL   TransData(CString   InStr,   PUCHAR   OutStr)  
  {  
  UINT                    i   =   0,   j   =   0;  
  UINT                   len   =   0;  
  UCHAR               Str[KEY_LEN   *   2];  
   
  len   =   InStr.GetLength();  
   
  if   ((len   %   2)   !=   0)  
  {  
  MessageBox("请按要求输入!",   "错误",   MB_OK   |   MB_ICONERROR);  
  return   FALSE;  
  }  
   
  memset(OutStr,   0,   sizeof(UCHAR[KEY_LEN]));  
  memset(Str,   0,   sizeof(UCHAR[KEY_LEN   *   2]));  
  strcpy((char*)(Str),   InStr.GetBuffer(0));  
  InStr.ReleaseBuffer();  
   
  for(i   =   0;   i   <   len;   i++)  
  {  
  if   ((Str[i]   >   47)   &&   (Str[i]   <   58))  
  {  
  Str[i]   -=   48;  
  }  
  else   if   ((Str[i]   >   64)   &&   (Str[i]   <   71))  
  {  
  Str[i]   -=   55;  
  }  
  else   if   ((Str[i]   >   96)   &&   (Str[i]   <   103))  
  {  
  Str[i]   -=   87;  
  }  
  else  
  {  
  MessageBox("数据格式错误!",   "错误",   MB_OK   |   MB_ICONERROR);  
  return   FALSE;  
  }  
  }  
   
  i   =   0;  
  while(i   <   len)  
  {   //   转换  
  Str[j]   =   Str[i]   *   16   +   Str[i   +   1];  
  i   +=   2;  
  j++;  
  }   
 
原创粉丝点击