ntohl
занимает uint32_t
. У меня есть сообщения с различными участниками (типа uint32_t
или uint16_t
). Можно ли правильно передать все полученные struct
или union
и преобразовать их, чтобы сказать uint32_t
, а затем reinterpret_cast
в мои union
или struct
?
Как я это делал, перечисляю, построчно, каждого отдельного члена union
или struct
и передавая его ntohl / s, как это msg.member = ntohl(msg.member);
, но это громоздко!
Структуры данных в целом переносятся из приложения C # .NET (Windows) в приложение Linux.
Когда я пытался,
void* ptr = &msg;
uint32_t temp = (uint32_t)ptr;
Компилятор жалуется, что:
ошибка: приведение от 'void *' к 'uint32_t' теряет точность