怎样把char*类型变量值,转换成用16进制数来表示的字符串?

dracoo 2004-01-06 01:51:01
比如:char* symbol[0]=0x1b
symbol[1]=0xaf
symbol[2]=0x0f
...
希望将symbol值转换得到一个“1BAF0F...”的字符串。
...全文
362 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracoo 2004-01-06
  • 打赏
  • 举报
回复
不好意思,有笔误
int mStrHex( unsigned char *buf, unsigned char *org )
{
int v;
char sym[16]="0123456789ABCDEF";

if( buf == NULL || org == NULL ) {
return 0;
}

while( *org != 0 ) {
v = *org>>4;
*buf = sym[v];
buf += 1;
v = *org & 0x0f;
*buf = sym[v];
buf += 1;
org += 1
}
return 1;
}
grooving 2004-01-06
  • 打赏
  • 举报
回复
sprintf函数!
dracoo 2004-01-06
  • 打赏
  • 举报
回复
我自己解决了。
int mStrHex( unsigned char *buf, unsigned char *org )
{
int v;
char sym[16]="0123456789ABCDEF";

if( buf == NULL || org == NULL ) {
return 0;
}

while( *org != 0 ) {
v = *org>>4;
*mov = sym[v];
mov += 1;
v = *org & 0x0f;
*mov = sym[v];
mov += 1;
org += 1
}
return 1;
}
skywarship 2004-01-06
  • 打赏
  • 举报
回复
to zhangfjj(小张)

没看清楚吧 ^_^ ,我写的是strlen, not sizeof
zhangfjj 2004-01-06
  • 打赏
  • 举报
回复
char * symbol;
symbol[0]=0x1b;
symbol[1]=0xaf;
symbol[2]=0x0f;
....

是这个意思吧。那么:

char *buff;
buff=(char *)malloc(strlen(symbol));//这只能获取指针的大小吧?
sprintf(buff, "%02x%02x.....", symbol[0]&0xff, symbol[1]&0xff,...);

记得初始化symbol时要在最后加上'\0'
dsao 2004-01-06
  • 打赏
  • 举报
回复
itoa(dest, src, 16); or _itoa(dest, src, 16);
skywarship 2004-01-06
  • 打赏
  • 举报
回复
char * symbol;
symbol[0]=0x1b;
symbol[1]=0xaf;
symbol[2]=0x0f;
....

是这个意思吧。那么:

char *buff;
buff=(char *)malloc(strlen(symbol));
sprintf(buff, "%02x%02x.....", symbol[0]&0xff, symbol[1]&0xff,...);

记得初始化symbol时要在最后加上'\0'
zhangfjj 2004-01-06
  • 打赏
  • 举报
回复
char* symbol[0]=0x1b
symbol[1]=0xaf
symbol[2]=0x0f
...
-------------------------看不懂你定义的是什么?
victor_cui 2004-01-06
  • 打赏
  • 举报
回复
char buff[1024];
sprintf(buff, "%02X%02X.....", symbol[0], symbol[1],...);
当然在实际应用中需要你自己扩展上面的实现

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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