高手们朝这里看啊BCB数据转换出有关问题了望帮帮忙!

高手们朝这里看啊!!!BCB数据转换出问题了望帮帮忙!!!!
串口发过来的数据(应该是字符串吧)无法转换为16进制(在Memo上显示出来的是ASCII码值)!我用的是MSComm里OnComm事件!具体程序如下:希望高手帮忙修改修改!
void __fastcall TForm1::MSComm1Comm(TObject *Sender)  
  {  
  unsigned int len,k;  
  char a_cBuf[100];  
  OleVariant s; //声明一个用于接收数据的OleVariant变量。  
  AnsiString str; //声明一个AnsiString类型的变量  
  int val;  
   
  if(MSComm1->CommEvent==comEvReceive)  
  // 接收缓冲区中是否收到Rthreshold个字符。  
  {  
  if(MSComm1->InBufferCount)// 是否有字符驻留在接收缓冲区等待被取出  
  {  
   
  s=MSComm1->Input;//接收数据  
  str=s.AsType(varString);  
   
  strcpy(a_cBuf,str.c_str());  
   
  for(k=0;k<strlen(a_cBuf);k++)  
  {  
  Memo1->Text=Memo1->Text+" "+IntToHex(a_cBuf[k],2);  
   
  }  
   
  }  
  }  
  }  


------解决方案--------------------
那个帖子就是楼主的旧帖子。
------解决方案--------------------
“ Memo1->Text=Memo1->Text+" "+IntToHex(a_cBuf[k],2); ”
看了一下
原来你串口发的数据本来就是ASCII码;
如:
a_cBuf[0] = 0x31 ; 
a_cBuf[1] = 0x32 ;
a_cBuf[2] = 0x33 ;
你调用IntToHex(a_cBuf[k],2); 时当然显示的也是ASCII吗 31,32,33

------解决方案--------------------
调用我下面写的 把你得到的ASCII字符串转换一下即可
C/C++ code

AnsiString ASCIIToString(AnsiString ASCII_Str)
{
  char h;
  AnsiString shou ;
  for(int i=0; i <ASCII_Str.Length();i=i+2)
  {
    AnsiString hex= ASCII_Str.SubString(i+1,2).UpperCase();
        int a = StrToInt("$"+hex);
    shou=(shou + char(a)).Trim() ;
  }
  return shou.Trim() ;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   ShowMessage(ASCIIToString("31"));
}

------解决方案--------------------
楼主到底想要显示什么格式?比如一个字符串:"1234",接收方是想显示"1234",还是想显示"31 32 33 34"?先说清楚。