设置转换字符串问题

Ngod 2010-12-23 12:23:18
有一个变量是int16类型的,不知怎么把一个两个字符的字符串付给它了,比如“DS”我用sprintf输出的是21316,我该怎么把这个21316转换回DS呢?
...全文
114 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2010-12-23
  • 打赏
  • 举报
回复
21316 16进制0x5344。53是S,44是D。
注意字节序
  • 打赏
  • 举报
回复
char *s = "DS";
int16 i;

sprintf((char*)(&i), "%s", s);// 这样?

// 然后
printf("%d", i); // 输出是21316??

// 那如果接着这样?

printf("%c %c", ((char *)&i)[0], ((char *)&i)[1]); // 然后这样??
witlym311 2010-12-23
  • 打赏
  • 举报
回复
DS 是什么意思哦?不明白lz的意思
昵称很不好取 2010-12-23
  • 打赏
  • 举报
回复
什么意思?DS是变量还是什么?21316怎么来的?
给个例子
fall513 2010-12-23
  • 打赏
  • 举报
回复
int i = 21316;
printf("%c%c", i & 0xff, i >> 8);
walkersfaint 2010-12-23
  • 打赏
  • 举报
回复
看下大小端
赵4老师 2010-12-23
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编。)
  • 打赏
  • 举报
回复
3楼只是给的一个例子!

出错应该是int16的问题!改成short?!
Ngod 2010-12-23
  • 打赏
  • 举报
回复

我应该是把a[2]='\0';加上。
Ngod 2010-12-23
  • 打赏
  • 举报
回复
我用memcmp()比较是可以的,但是用memcpy()怎么会有问题呢?
short int i;
i=21316;
char a[3];

printf("%d",memcmp(&i,"DS",2));

memcpy(a,&i,2);
printf("%s",a);
CJBAAA 2010-12-23
  • 打赏
  • 举报
回复
这个最好直接用内存拷贝,象八楼的memcpy(&i, "DS", strlen("DS"));就不错的
popo00fa 2010-12-23
  • 打赏
  • 举报
回复
memcpy(&i, "DS", strlen("DS"));
Ngod 2010-12-23
  • 打赏
  • 举报
回复

3楼的程序运行会有问题。
有没有什么好的办法转换
就想叫yoko 2010-12-23
  • 打赏
  • 举报
回复
+1, 把21316转成16进制后, 分别取出高8位 低8位 再转成char型[Quote=引用 4 楼 luciferisnotsatan 的回复:]
21316 16进制0x5344。53是S,44是D。
注意字节序
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luciferisnotsatan 的回复:]
21316 16进制0x5344。53是S,44是D。
注意字节序
[/Quote]

嗯,大小段要注意下!

69,371

社区成员

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

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