高手请进:怎么把char*类型的内容为ascii(十六进制)转换为对应的字符串?

kenerl 2002-08-19 09:03:01
如:
"4d"-->M
"314e"-->"1E"
"424342"-->"BCB"
怎么做?高手请出招
thx.....

...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcb_fans 2002-08-20
  • 打赏
  • 举报
回复
不好意思,的确错了,更改:

for(int i=1; i < EncodeStr.Length(); i += 2)
{
AnsiString TempStr = "0x" + EncodeStr.SubString(i,2);
DecodeStr += AnsiString((char)(TempStr.ToInt()));
}
kenerl 2002-08-20
  • 打赏
  • 举报
回复
不行,下面的是ansistring
("0x" + EncodeStr.SubString(i,2))
只有是int的时候才行:
char c = (char)0x4D; // == 'M'
这其中0x4D是int
annkie 2002-08-20
  • 打赏
  • 举报
回复
To BCB_FANS(四大名捕之追杀令) :
应该是从后面往前递推吧,记得不是很清楚,以前学asm的时候经常有这个转换,印象中是如果hex值是单数(我现在都 不知道会不会有单数的情况)话,就应从最后往前推.
bcb_fans 2002-08-20
  • 打赏
  • 举报
回复
"4D"是字符'M'的ASCII码的确16进制表示

char c = (char)0x4D; // == 'M'

==================================
通用解码代码如下:

AnsiString EncodeStr;
AnsiString DecodeStr;

for(int i=1; i < EncodeStr.Length(); i += 2)
{
DecodeStr += AnsiString((char)("0x" + EncodeStr.SubString(i,2)));
}

belbel 2002-08-20
  • 打赏
  • 举报
回复
//使用标准C,程序如下,优点是简单而且快速——构建字母表只需一次。

int CharTable[100];

void MakeTable(void)
{
int j = 0;
for(int i='0'; i<='9'; ++i)
{
CharTable[i] = j;
++j;
}

j = 10;
for(i='A'; i<='Z'; ++i)
{
CharTable[i] = j;
++j;
}

j = 10;
for(i='a'; i<='z'; ++i)
{
CharTable[i] = j;
++j;
}

return;
}

void Transform(char *Src, char *Des)
{
char tmp;
int index = 0;

int i;
for(i=0; Src[i]!=0; i+=2)
{
if(0 == Src[i+1]) //Input data error.
{
return;
}

tmp = CharTable[Src[i]]*16 + CharTable[Src[i+1]];
Des[index] = tmp;
++index;
}

Des[index] = 0;
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧