涨知识!C语言中大端、小端字节序各自优势及判断
来源 :今日头条@小智雅汇
另外,计算机是按字长(如32位、64位)来访问内存数据的,而内存是按字节为单位来存储和编址的。
对于32位机,int = 0x04030201需要4个字节来存储,首字节(低地址)是存储04还是01呢? 存储04(高位)的称为大端CPU,存储01(低位)的称为小端CPU。
小端字节序优势↓
大端字节序优势↓
因为字节序可能存在的问题↓
void Endian(){int val = 0x04030201;char firstByte = *(char*)&val;printf("%x",&val);if(firstByte==0x01)printf("Little-Endian(小端):首地址存储数据的低位\n");if(firstByte==0x04)printf("Big-Endian(大端):首地址存储数据的高位\n");char* p = &firstByte;}int main(){Endian();int val = 0x41424344;FILE* fp;if((fp=fopen("test.txt","wb"))==NULL)return 0;fwrite(&val,sizeof(val),1,fp);fclose(fp);system("type test.txt"); //DCBA(小端CPU)if((fp=fopen("test.txt","rb"))==NULL){printf("ss");return 0;}unsigned char buf[1024];if((fread(buf,sizeof(unsigned char),1024,fp))!=0){int readVal = *(int*)&buf;printf("\n%x\n",readVal); // 41424344}fclose(fp);system("pause");return 0;}/*Little-Endian(小端):首地址存储数据的低位DCBA41424344*/
-END-
推荐阅读
