龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

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

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
sswanglei 发表于 2007-2-9 16:08:00 /*------------------------------------------------------------ 函数名 : TransData(CString InStr, PUCHAR OutStr) 功 能 : 将字符串转换成十六进制数据 参 数 : CString InStr [in] 输入字符
sswanglei 发表于 2007-2-9 16:08:00 /*------------------------------------------------------------  
   
      函数名   :   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++;  
  }   
精彩图集

赞助商链接