嘿,伙计们,从C /网络新手的问题...字节顺序在C
我在做一些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再次字节被逆转。我究竟做错了什么?
谢谢!
不,如果你希望你的程序是可移植的(OP甚至没有说他的平台是什么),否则不要转换成小端,转换为主机本地顺序。这正是ntohs()和ntohl()的用处。 – bortzmeyer 2009-02-08 17:18:28