也是16进制转换的有关问题

也是16进制转换的问题
比如 "4EV "转换成16进制是34   45   56;现在我读到的是一个AnsiString的“34   45   56”,怎么才能把它转换成16进制的0x34   0x45   0x56,再把这个16进制转换成“4EV”?

------解决方案--------------------
#include <stdio.h>
AnsiString cvt(AnsiString In)
{
AnsiString ret = " ";
char *p = In.c_str();
char c;
for (int i = 0; i < (In.Length() + 1) / 3; i++)
{
sscanf(p, "%02X ", &c);
p += 3;
ret = ret + c;
}
return ret;
}

//用法:
ShowMessage(cvt( "34 45 56 "));


------解决方案--------------------
传进去AnsiString_to_BCD( "344556 ");//传进去的不能有空格。预先处理掉空格就可以

AnsiString AnsiString_to_BCD(AnsiString wait_to_trans)
{
AnsiString DecodeStr;
try
{
for (int i = 1; i < wait_to_trans.Length() + 1; i += 2)
{
AnsiString TempStr = "0x " + wait_to_trans.SubString(i, 2);
DecodeStr += AnsiString((char) (TempStr.ToInt()));
}
}
catch (...)
{
return " ";
}
return DecodeStr;
}

eg:

a = AnsiString_to_BCD( "12345567 ");
result a = 0x12 0x34 0x55 0x67;