使用memcpy将uint32_t htonl转换为char [4]不会提供输出

时间:2014-04-09 23:05:05

标签: c++ memcpy arrays endianness htonl

我的问题有点类似于此链接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 ++,所以请原谅我在这里做错的任何愚蠢的事情。

0 个答案:

没有答案