字节序 - 如何判断大端小端
大端模式:高的有效字节存储在低的存储器地址。网络字节序为大端;
小端模式:低的有效字节存储在低的存储器地址。
顺序自然即大端
判断原理:定义一个大字节的数据 x,判断存放 x 的首地址的数据如何。
强制类型转换,指针指向首地址
联合体中成员共用一段内存,并且都是从内存首地址开始存
/*********************************************************
Copyright © 2022 Shengkai Liu. All rights reserved.
FileName: big_endian.c
Author: Shengkai Liu
Date: 2022-05-30
***********************************************************/
#include <stdio.h>
// method one
void is_big_endian()
{
printf("方法一\n强制类型转换:\n");
int a = 0x11223344;
char b = *(char *)&a;
if (b == 0x11)
{
printf("大端模式\n");
}
else
{
printf("小端模式\n");
}
printf("\n");
}
// method two
void is_big_endian1()
{
printf("方法二\n联合体:\n");
union u
{
int a;
char b;
}u;
u.a = 0x11223344;
if (u.b == 0x11)
{
printf("大端模式\n");
}
else
{
printf("小端模式\n");
}
}
int main()
{
printf("size of int: %ld\n", sizeof(int));
printf("size of char: %ld\n\n", sizeof(char));
is_big_endian();
is_big_endian1();
return 0;
}