免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wang_cao2190
打印 上一主题 下一主题

求助!如何将short(两字节)型数据存入字符型数组char buf[](1) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-08-14 14:07 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

#include <stdio.h>;

int main()
{
   unsigned short x=123;
   char buf[10];
   sprintf(buf,"%hd",x);
   printf("%s\n",buf);
   return 0;
}

其中sprintf(buf,"%hd",x);
改成
sprintf(buf,"%s",x);
会有区别吗
存进去的会是3个字节

论坛徽章:
0
12 [报告]
发表于 2005-08-14 16:02 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

[quote]原帖由 "wang_cao2190"]其输出结果只有”hello“[/quote 发表:

很正常,因为在buf[5]里是0,buf[6]里是100。

论坛徽章:
0
13 [报告]
发表于 2005-08-14 20:14 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

我的本意是这样的
即将一个数存入char型数组
如果是小于256的数(例如130)
我可以这样做char buf[6]=130;
即可存入;
但是如果是大于256的数,超出了8位。存入一个buf里会出错。
而且,我想将数(例如1000)以某种方式  只 存入 buf[6],buf[7].

请大峡们赐教

论坛徽章:
0
14 [报告]
发表于 2005-08-14 20:18 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

如果按照mq110大侠的做法
sprintf();
而是将‘1’‘0’’0‘‘0’
存入了buf[6],buf[7],buf[8],buf[9]

论坛徽章:
0
15 [报告]
发表于 2005-08-14 21:21 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

你的想法可以实现,例如
unsigned short num;
unsigned char buf[1024];
int n;
..................
if(num < 256)  {
buf[n] = num;n++;
}
else{
                 memcpy(buf+n, &num, 2);
n+=2;
}
.......................
但这样做是无意义的,因为当你想反过来还原时就不好判断了,例如256会被存为值等于 0和1的两个字节里,取出时到底是0和1两个数还是256一个数呢???

论坛徽章:
0
16 [报告]
发表于 2005-08-14 21:27 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

我这样做过,
%d输出得到的结果是 中间多一个“?”号
所以我也很郁闷
不知道怎样实现

是固定buf[6],buf[7]来存这个数;

论坛徽章:
0
17 [报告]
发表于 2005-08-14 21:34 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

  1. int main()
  2. {
  3.         char c[100]="0123456789";
  4.         short t;
  5.         t=1000;
  6.         *(short *)c=t;
  7.         printf("%d,%d,%d,%d\n",*(char *)c,*((char *)c+1),*((char *)c+2),*((char *)c+3));
  8.         printf("%d\n",*((short *)c));
  9.         return 0;
  10. }
复制代码

难道你想要的是这个?

论坛徽章:
0
18 [报告]
发表于 2005-08-14 21:50 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

你误解了
如果是这样的话
我可以这样实现
int main()
{
    char c[10];
    short t;
    t=1000;
    sprintf(c,"%d",t);
    printf("%d,%d,%d,%d\n",c[0],c[1],c[2],c[3]);
}
我想将一个数1000
用两个元素buf[6],buf[7]来存 取!!
我想了一个方法不知道可行吗和有意义吗?

论坛徽章:
0
19 [报告]
发表于 2005-08-14 21:53 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

#include <stdio.h>;
#include <stdlib.h>;
main()
{
   unsigned short num;
   char buf[10];
   num=100;
   memcpy(buf,"hello",5);
   int num1,num2;
   num1=(int)num%256;
   num2=(int)num/256;
   buf[5]=num1;
   buf[6]=num2;



   buf[7]='a';
   buf[8]='b';
   printf("%d\n",buf);
}

论坛徽章:
0
20 [报告]
发表于 2005-08-14 22:05 |只看该作者

求助!如何将short(两字节)型数据存入字符型数组char buf[](1)

既然是当成二进制数据处理了,还用printf干啥?
肯定看不到嘛,看到的是侥幸;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP