peakzhang 发表于 2008-4-29 10:22:52

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

string strTest("1234567");
    u_short usTest = htons(strTest.length());
char strBuf;
memset(strBuf,'\0',256);
memcpy(strBuf,&usTest,sizeof(u_short));//这里为什么总是不能拷贝进去值,如果不使用htons变换,却是正常的,why?
strcat(strBuf,strTest.c_str());                   //这里是正确的
很郁闷

peakzhang 发表于 2008-4-29 10:23:01

在你这个demo里面,使用了htons变换了数据后,第一个字节是0,所以你觉得没拷贝进去,是吗?

你看一下内存,第二个字节应该是7,表示长度。

peakzhang 发表于 2008-4-29 10:23:08

对,是这样,可是我怎么样将这个buffer打印出来呢

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

或者cout<<strBuf<<endl;都无法正确显示该值?

peakzhang 发表于 2008-4-29 10:23:16

这个缓冲区里面,已经不是正常的字符串了,你不能使用字符串的操作函数来对待它。

如果要输出,可以使用输出16进制的参数来进行处理。

ligeqq 发表于 2008-6-20 13:58:38

ACE_HEX_DUMP
页: [1]
查看完整版本: memcpy 不能拷贝经过htons变换后的内存吗?