C语言网络编如何判断CPU是大端还是小端模式

最近在学习网络编程的时候一直不明白大端模式和小端模式的CUP的工作方式;做了下面的测试后得知本机CPU采取的是小端模式;
测试1:

#include 
int main(int argc, const char *argv[])
{
     
	int i = 0x41424300;
	printf("i:%s\n",(char *) &i);
	return 0;
}

输出:
linux@ubuntu:~/test$ gcc test1.c -Wall
linux@ubuntu:~/test$ ./a.out
i:
linux@ubuntu:~/test$
C语言网络编如何判断CPU是大端还是小端模式_第1张图片
因为CPU是小端模式,会先读取0x0000地址中的内容,所以以字符输出的时候,先读取到了’\0’,所以就什么也没有输出出来;

测试2:

#include 

int main(int argc, const char *argv[])
{
     
	int i = 0x00434241;
	printf("i:%s\n",(char *) &i);
	return 0;
}

输出:
linux@ubuntu:~/test$ gcc test1.c -Wall
linux@ubuntu:~/test$ ./a.out
i:ABC
linux@ubuntu:~/test$

C语言网络编如何判断CPU是大端还是小端模式_第2张图片
因为是小端模式,会先读取0x0000地址中的内容,而0x41在ASCII的对应字符是’A’,依次是’B’和’C’,最后是’\0’;所以就会输出ABC这样的结果。

你可能感兴趣的:(C语言网络编程)