unsigned char data[8];
unsigned str[2];
str[1] = 0;
str[0] = 24;
memset(data,str[0],4);
memset(data+4,str[1],4);unsigned len[2];
memcpy(len,data,8);printf("%d,%d\n",len[0],len[1]);
的结果却不是24,0.
这是什么?如果要得到24,0.应该如何?
PS:
unsigned char是一个字节;
unsigned是4个字节。
unsigned str[2];
str[1] = 0;
str[0] = 24;
memset(data,str[0],4);
memset(data+4,str[1],4);unsigned len[2];
memcpy(len,data,8);printf("%d,%d\n",len[0],len[1]);
的结果却不是24,0.
这是什么?如果要得到24,0.应该如何?
PS:
unsigned char是一个字节;
unsigned是4个字节。
解决方案 »
- manifest authoring warning 81010002: Unrecognized Element "application" in
- vc++中判断字符串中是否有全角数字!
- 请教关于CSerialPort的问题
- 我VIEW的滚动问题,我做了个基于SDI的程序,但是图象超过显示区域大小如何让它自动支持滚动?
- 请问这个函数是不是用于嵌入式系统的
- 请教:如何在VC++中设置static text的字体和字号?
- 老大们帮帮忙啊!!一段VC的代码!
- 请问如何在基于对话框的程序里实现打印图片?急。。。。
- 那里有比较好的TCP/IP的论坛啊?_
- NetAssist网络调试助手TCP通信端口号问题
- 真心求解释!!
- 一个ocx控件怎样查看里面的接口和方法?
原来是memset()作怪。
那我直接绕过memset(),用memcpy(len,str,8);就OK了。
unsigned char data[8];
unsigned str[2];
str[1] = 0;
str[0] = 24;
memset(data,0,4);
memset(data,str[0],1);
memset(data+4,str[1],4); unsigned len[2];
memcpy(len,data,8); printf("%d,%d\n",len[0],len[1]);
unsigned 是unsigned int 是4位。
你原来memset(data,str[0],4); 4位就变成 24,24,24,24
只能拷贝第一位。地位在前,高位在后
既然memset();只能拷贝第一位,那我就改成用memcpy();实现了。
问题已经解决了。
谢谢~