我有一个字符数组,其中包含以下字节:
output[0] = 0
output[1] = 0
output[2] = 4
output[3] = -46
output[4] = 0
output[5] = 0
output[6] = 0
output[7] = 0
当我将此数组作为第二个参数传递给以下函数时
this->refServer->Transmit(ConnectionId,output);
void Server::Transmit(int ConnectionIndex, const char* MessageToSend)
数组变为null。我猜这个数组在转换为const char *到第一个空字符时被修剪,但我不知道如何在不改变输出字节的情况下阻止它。
答案 0 :(得分:2)
从char[]
到const char*
的转换是无操作的,不是原因。
在您的情况下,问题很可能是Server::Transmit
期望缓冲区是以空字符结尾的字符串。因此它将第一个零字节(它是数组的第一个元素)视为消息的结尾。所以你不能用这个实现发送一个零字节。
您需要更改Transmit
实现,以便在那里传递一段消息,或者为零值创建一个转义方案(从而更改传出的字节)。