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()); //这里是正确的
很郁闷 在你这个demo里面,使用了htons变换了数据后,第一个字节是0,所以你觉得没拷贝进去,是吗?
你看一下内存,第二个字节应该是7,表示长度。 对,是这样,可是我怎么样将这个buffer打印出来呢
我使用 printf("%s\n", (char*)strBuf);
或者cout<<strBuf<<endl;都无法正确显示该值? 这个缓冲区里面,已经不是正常的字符串了,你不能使用字符串的操作函数来对待它。
如果要输出,可以使用输出16进制的参数来进行处理。 ACE_HEX_DUMP
页:
[1]