在有关小尾数法和大尾数法的以下程序中:
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
,这就是为什么您的值被截断的原因。