memcpy unsigned long型的问题

zhangwuji156 2008-11-10 04:17:19
unsigned long型应该是4位吧,我查了MSDN,它的编码形式是从前往后的吧,以前看好像跟处理器有关,有的排序就是前后颠倒的。
如果是4位,41这个数,16进制是29,相应的ANSCII符号是“)”。
那么它的表示不应该是00 00 00 29吗?
调试看内存,它表示是29 00 00 00,
unsigned len = 41;
char * s = new char[100];
本来我是想memcpy(s, &len, 4);
printf("%lu", s);
unsigned long的...(%D之类的叫什么,我不会说)应该是%lu吧,我上网查的,不过好像%u也行。
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangwuji156 2008-11-10
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#include <string>

#define TYPE_COPY 'C'
int main(int argc, char *argv[])
{
/*假如想传递http://wwww.scxxt.com.cn/%B7%C5%C9%FA.mp3这个网址,类型为
TYPE_COPY*/
string strURL = "http://wwww.scxxt.com.cn/%B7%C5%C9%FA.mp3";
unsigned long len = strURL.length();
char *chrURL = new char[len+7];
memset(chrURL, 0, len+7);

memcpy(chrURL, &len, 4);


memcpy(chrURL+4, strURL.c_str(), strURL.length());
chrURL[len+5] = TYPE_COPY;

printf("%lu, %s, %C", (unsigned long*)chrURL, chrURL+4, chrURL[len+5]);
return 0;
}
zhangwuji156 2008-11-10
  • 打赏
  • 举报
回复
你试过吗,结果不对,强制类型转换不转换一样,
shadowstar 2008-11-10
  • 打赏
  • 举报
回复

printf("%lu", *(ungigned*)s);
printf("%s", s);

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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