在有关小尾数法和大尾数法的以下程序中:

char *s = "1234";
printf("%08X\n",*(int *)s); //big endian
int little = ntohl(*s);
printf("%08X\n",little);//Little endian


我得到以下输出:

34333231
31000000


第二行应与第一行相反。我究竟做错了什么?
我很少有C方面的经验,但有一些其他语言的经验。

最佳答案

您需要这样的东西:

int little = ntohl(*((uint32_t*)s));


否则,您只将char传递给ntohl,这就是为什么您的值被截断的原因。

10-06 09:45