找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5239|回复: 4

memcpy 不能拷贝经过htons变换后的内存吗?

[复制链接]
发表于 2008-4-29 10:22:52 | 显示全部楼层 |阅读模式
string strTest("1234567");
    u_short usTest = htons(strTest.length());
char strBuf[256];
memset(strBuf,'\0',256);
memcpy(strBuf,&usTest,sizeof(u_short));//这里为什么总是不能拷贝进去值,如果不使用htons变换,却是正常的,why?
strcat(strBuf,strTest.c_str());                   //这里是正确的
很郁闷
 楼主| 发表于 2008-4-29 10:23:01 | 显示全部楼层
在你这个demo里面,使用了htons变换了数据后,第一个字节是0,所以你觉得没拷贝进去,是吗?

你看一下内存,第二个字节应该是7,表示长度。
 楼主| 发表于 2008-4-29 10:23:08 | 显示全部楼层
对,是这样,可是我怎么样将这个buffer打印出来呢

我使用 printf("%s\n", (char*)strBuf);

或者cout<<strBuf<<endl;都无法正确显示该值?
 楼主| 发表于 2008-4-29 10:23:16 | 显示全部楼层
这个缓冲区里面,已经不是正常的字符串了,你不能使用字符串的操作函数来对待它。

如果要输出,可以使用输出16进制的参数来进行处理。
发表于 2008-6-20 13:58:38 | 显示全部楼层
ACE_HEX_DUMP
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-6 13:50 , Processed in 0.036163 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表