C/C++ char数组转十六进制

LarryInTokyo 2011-08-25 02:54:42
如下:
char msg[8]={0};
...
//函数调用处理,msg的值将会改变。
...
//printf("%s",msg);//打印结果为乱码"ð¯"
//不是printf("%d",msg);//打印数组msg的地址
//也不是printf("%x",msg);//打印数组msg的地址
请问我应该怎样操作才能将msg的值转换为十六进制打印出来?(不是打印msg的地址,是将msg数组的内容转换后打印)。
...全文
664 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤独小剑 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 showonstage1 的回复:]

引用 5 楼 luciferisnotsatan 的回复:

引用 4 楼 showonstage1 的回复:

按照你给的运行,结果变成了
FFFFFFAE 00 00 00 00 00 00 00
怎么解释啊? 为什么第一个打出来是这样?很大的数了。
引用 1 楼 0153 的回复:

int i;
for (i=0;i<8;i++) {
printf("%02X ",……
[/Quote]
用无符号字符,变成很大的数是因为大于了127(有符号的全为负值了)而有默认当作整型int来取值了,所以是一个很大的数,楼主再看下你那个很大的数应该是8个字母吧。
LarryInTokyo 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 luciferisnotsatan 的回复:]

引用 4 楼 showonstage1 的回复:

按照你给的运行,结果变成了
FFFFFFAE 00 00 00 00 00 00 00
怎么解释啊? 为什么第一个打出来是这样?很大的数了。
引用 1 楼 0153 的回复:

int i;
for (i=0;i<8;i++) {
printf("%02X ",msg[i]);
}
行不行?

用 unsigned c……
[/Quote]
thx!
LarryInTokyo 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 0153 的回复:]

原来你的返回值不是纯文本啊,那就强转一下试试:
int i;
for (i=0;i<8;i++) {
printf("%02X ",(int)(unsigned char)msg[i]);
}
[/Quote]

行了!多谢啊。
0153 2011-08-25
  • 打赏
  • 举报
回复
原来你的返回值不是纯文本啊,那就强转一下试试:
int i;
for (i=0;i<8;i++) {
printf("%02X ",(int)(unsigned char)msg[i]);
}
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 showonstage1 的回复:]

按照你给的运行,结果变成了
FFFFFFAE 00 00 00 00 00 00 00
怎么解释啊? 为什么第一个打出来是这样?很大的数了。
引用 1 楼 0153 的回复:

int i;
for (i=0;i<8;i++) {
printf("%02X ",msg[i]);
}
行不行?
[/Quote]
用 unsigned char试试。
第一个AE有符号的补位了。
LarryInTokyo 2011-08-25
  • 打赏
  • 举报
回复
按照你给的运行,结果变成了
FFFFFFAE 00 00 00 00 00 00 00
怎么解释啊? 为什么第一个打出来是这样?很大的数了。
[Quote=引用 1 楼 0153 的回复:]

int i;
for (i=0;i<8;i++) {
printf("%02X ",msg[i]);
}
行不行?
[/Quote]
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 0153 的回复:]

int i;
for (i=0;i<8;i++) {
printf("%02X ",msg[i]);
}
行不行?
[/Quote]
++
ttktw 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 0153 的回复:]
int i;
for (i=0;i<8;i++) {
printf("%02X ",msg[i]);
}
行不行?
[/Quote]
UP
0153 2011-08-25
  • 打赏
  • 举报
回复
int i;
for (i=0;i<8;i++) {
printf("%02X ",msg[i]);
}
行不行?

69,371

社区成员

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

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