[英]How to copy a block of memory containing null terminator in c++
我已经在C#中将图像转换为字节数组,并已通过TCP将其发送到了用C ++编写的服务器应用程序中。
现在,我想将此字节数组复制到另一个内存块。 我已经尝试过memcpy()
函数,但是问题是memcpy
复制内存块直到它到达空终止符('\\ 0'),并且字节数组包含许多空终止符,我也希望它们也被复制。
更新
为简单起见,我使用以下语句将C#中的字符串“ Hello \\ 0” World \\ 0“转换为字节数组:
string s = "Hello\0"World\0";
byte[] bytes = Encoding.UTF8.GetBytes(s);
我在C ++中以无符号char *接收字节,并将其复制到另一个char指针,如下所示:
char *chars = new char[12];
memcpy(chars , recvChar, MESSAGE_12);
但是char *结果为“ Hello”;
根据这个
memcpy()
函数不会在源代码中检查任何终止的空字符-它始终精确地复制num个字节。 您确定是memcpy吗?
您可以使用类似这样的方法来打印chars数组(printf以NULL字符终止):
for (int i = 0; i < 12; i++) //12 is the size of chars, I assume
{
if (chars[i]!=NULL) //if you hit a '\0', ignore it
printf("%c", chars[i]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.