Преобразование uint32_t htonl в char[4] с использованием memcpy не дает вывода

Мой вопрос в некотором роде похож на тот, который приведен в этой ссылке: используйте htonl для преобразования целого числа и memcpy в char*, но ничего, и есть некоторые другие подобные вопросы, но причина, по которой я задаю новый, заключается в том, что я не удалось найти решение. То, что я хочу сделать, это добавить длину сообщения в 4 байта от htonl перед отправкой реального сообщения (sendBuffer)

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 ответов

Другие вопросы по тегам