首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-02-15 
也是16进制转换的问题比如 4EV 转换成16进制是344556;现在我读到的是一个AnsiString的“344556”,怎么才能

也是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;

热点排行