免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 10049 | 回复: 22
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-14 13:21 |只看该作者 |正序浏览
我的程序如下:
#include <stdio.h>;
#include <stdlib.h>;
main()
{
    unsigned short num;
    char buf[10];
    num=100;
    memcpy(buf,"hello",5);
    memcpy(buf+5,&num,2);
    buf[7]='a';
    buf[8]='b';
    printf("%s\n",buf);
}

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
23 [报告]
发表于 2005-08-17 15:08 |只看该作者

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

union?如果需要这样的话,定义一个union不就可以了吗?
type union {
short sn;
char ch[2];
}USC;

USC usc;
usc.sn = 1000;
buf[0] = ch[0];
buf[1] = ch[1];

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

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

确实是无意义

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

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

晕,我明白了,原来LZ你连自己想要做什么都不知道么
你先试图把问题描述清楚吧

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

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

既然是当成二进制数据处理了,还用printf干啥?
肯定看不到嘛,看到的是侥幸;

论坛徽章:
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
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
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
16 [报告]
发表于 2005-08-14 21:27 |只看该作者

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

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

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

论坛徽章:
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一个数呢???
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP