我的问题有点类似于此链接use htonl convert a int number, and memcpy to a char*, but nothing中的问题,还有一些其他类似问题,但我问新问题的原因是因为我无法找到解决方案。我想做的是在发送实际消息(sendBuffer)之前将消息的长度作为htonl的4个字节前置
int packed_len = strlen(dataInChar); //dataInChar is the serialized char array
char myByteArray[sizeof(int)];
uint32_t bigEndianValue = htonl(packed_len); // convert the value to big-endian for cross-platform compatibility
memcpy(myByteArray, &bigEndianValue, sizeof(uint32_t));
std::cout<<"myByteArray length: "<<strlen(myByteArray)<<std::endl; //output 0
char sendBuffer[1024]; //final buffer to send
memcpy(sendBuffer, &myByteArray, 4);
memcpy(sendBuffer+4, dataInChar, strlen(dataInChar));
std::cout<<"sendBuffer length: "<<strlen(sendBuffer)<<std::endl; //output 0
多年来我没有触及过c ++,所以请原谅我在这里做错的任何愚蠢的事情。