我正在用 C 语言进行一些套接字编程,并试图解决字节顺序问题。我的请求(发送)很好,但是当我收到数据时,我的字节都乱了。我从这样的事情开始:
char * aResponse= (char *)malloc(512);
int total = recv(sock, aResponse, 511, 0);
在处理这个响应时,每个 16 位字的字节似乎都颠倒了(我使用的是 UDP)。我试图通过这样做来解决这个问题:
unsigned short * _netOrder= (unsigned short *)aResponse;
unsigned short * newhostOrder= (unsigned short *)malloc(total);
for (i = 0; i < total; ++i)
{
newhostOrder[i] = ntohs(_netOrder[i]);
}
当我将数据视为短数据时,这可以正常工作,但是如果我再次将指针转换为 char,则字节会反转。我究竟做错了什么?