我已经在C#中将图像转换为字节数组,并通过TCP将其发送到用C ++编写的服务器应用程序。
现在我想将这个字节数组复制到另一个内存块。我已经尝试了memcpy()
函数,但问题是memcpy
复制内存块,直到它到达空终止符('\ 0'),并且字节数组包含许多空终止符,我希望它们也被复制了。
更新
为简单起见,我使用以下语句将C#中的字符串“Hello \ 0”World \ 0“转换为字节数组:
string s = "Hello\0"World\0";
byte[] bytes = Encoding.UTF8.GetBytes(s);
我在c ++中的unsigned char *中接收字节并将其复制到另一个char指针,如下所示:
char *chars = new char[12];
memcpy(chars , recvChar, MESSAGE_12);
但是char *会产生“Hello”;
答案 0 :(得分:1)
根据this
函数memcpy()
不检查源中的任何终止空字符 - 它总是复制num字节。你确定它是memcpy吗?
您可以使用类似的东西来打印字符数组(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]);
}