如何将内存数值转化为字符串

assicen 2009-02-17 11:03:38
比如 内存中
00410000 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF

怎么获得一个字符串 比如 char buf[]="00112233445566778899AABBCCDDEEFF"

求解
...全文
253 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingyaoli 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 assicen 的回复:]
如果遇到了
0x00 这样的数字 怎么处理?我试了一下 按2楼的方法 好象输不出来
[/Quote]
char c=0x00;
buf+=sprintf(buf,"%x%x",(c>>4)&0xF,c&0xF);
这样对0x00也是可以的
whuyotc 2009-02-19
  • 打赏
  • 举报
回复
mark
na2650945 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Dinelgua 的回复:]
定义一个byte逐个字节遍历内存内容
然后使用itoa转换成字符
再把得到的字符连接起来形成字符串
[/Quote]
学习了.
Promi 2009-02-17
  • 打赏
  • 举报
回复
每个16进制数字占4位,所以每个字节可以表示两个16进制数字.

const char s[16] = { '0','1'...'9','A'...'F' };

for( unsigned int i=0; i<BUFLEN; ++i )
{
putchar( s[buf[i]&0x0F] );
putchar( s[buf[i]>>4] );
}
challenge99 2009-02-17
  • 打赏
  • 举报
回复
内存中有不是0 or 1的数么?
waizqfor 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 assicen 的回复:]
BYTE的话 如 BYTE b = ee; 用 itoa(e) 得到的是"ee"还是"238"?
[/Quote]
是ee 直接转换成字符串 不做进制调整
九桔猫 2009-02-17
  • 打赏
  • 举报
回复
1楼正解
assicen 2009-02-17
  • 打赏
  • 举报
回复
BYTE的话 如 BYTE b = ee; 用 itoa(e) 得到的是"ee"还是"238"?
Dinelgua 2009-02-17
  • 打赏
  • 举报
回复
定义一个byte逐个字节遍历内存内容
然后使用itoa转换成字符
再把得到的字符连接起来形成字符串
assicen 2009-02-17
  • 打赏
  • 举报
回复
如果遇到了
0x00 这样的数字 怎么处理?我试了一下 按2楼的方法 好象输不出来
qingyaoli 2009-02-17
  • 打赏
  • 举报
回复
char c=0xee;
buf+=sprintf(buf,"%x%x",(c>>4)&0xF,c&0xF);

70,020

社区成员

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

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