请问这个字节序是长尾端还是短尾端的大小端?
- 内容介绍
- 文章标签
- 相关推荐
本文共计548个文字,预计阅读时间需要3分钟。
一个字节序定义:字节序是指多字节数据在内存中的存储顺序。字节序分为大端字节序和小端字节序。
字节序讨论:在一个数据中,字节之间的排列顺序决定了数据的解释方式。对于int类型,通常有4个字节。讨论这4个字节之间的排列顺序,即确定数据是大端还是小端。
假设一个整数int a=0x11223344,其低地址端存储的是最低位字节,高地址端存储的是最高位字节。根据字节序的不同,存储方式如下:
- 大端字节序:高地址端存储高位字节,低地址端存储低位字节。 存储结果:44 33 22 11
- 小端字节序:低地址端存储低位字节,高地址端存储高位字节。 存储结果:11 22 33 44
本地地址 - 高地址D
一、字节序定义
字节序:讨论一个数据里,字节之间的排放顺序(对于int型有4字节,则讨论这4者之间的排列顺序)
假设一个整数 int a=0x11223344
低地址————————————>高地址
[ ][ ][ ][ ][ ][ ][11][22][33][44][ ][ ][ ][ ][ ][ ][ ][ ] 大端存储模式
[ ][ ][ ][ ][ ][ ][44][33][22][11][ ][ ][ ][ ][ ][ ][ ][ ] 小端存储模式
二、用代码判断大小端的两种方式
1.用char*型指针解引用int型数据
int main() {
int a = 1; //0x00000001
char* p = &a; //从a的首字节地址向后读取1字节,所以用char*
if (*p == 0)
printf("大端"); //00 00 00 01 ,读取的第一个字节为0
if (*p == 1)
printf("小端"); //01 00 00 00 ,读取的第一个字节为1
return 0;
}
2.通过联合类型(共用体)判断
联合类型(共用体)链接
union Un {
char a;
int b;
}u; //联合体内定义的变量首字节地址相同
int main() {
u.b = 1; //0x00000001
if (u.a == 0)
printf("大端"); //00 00 00 01 ,读取的第一个字节为0
if (u.a == 1)
printf("小端"); //01 00 00 00 ,读取的第一个字节为1
return 0;
}
本文共计548个文字,预计阅读时间需要3分钟。
一个字节序定义:字节序是指多字节数据在内存中的存储顺序。字节序分为大端字节序和小端字节序。
字节序讨论:在一个数据中,字节之间的排列顺序决定了数据的解释方式。对于int类型,通常有4个字节。讨论这4个字节之间的排列顺序,即确定数据是大端还是小端。
假设一个整数int a=0x11223344,其低地址端存储的是最低位字节,高地址端存储的是最高位字节。根据字节序的不同,存储方式如下:
- 大端字节序:高地址端存储高位字节,低地址端存储低位字节。 存储结果:44 33 22 11
- 小端字节序:低地址端存储低位字节,高地址端存储高位字节。 存储结果:11 22 33 44
本地地址 - 高地址D
一、字节序定义
字节序:讨论一个数据里,字节之间的排放顺序(对于int型有4字节,则讨论这4者之间的排列顺序)
假设一个整数 int a=0x11223344
低地址————————————>高地址
[ ][ ][ ][ ][ ][ ][11][22][33][44][ ][ ][ ][ ][ ][ ][ ][ ] 大端存储模式
[ ][ ][ ][ ][ ][ ][44][33][22][11][ ][ ][ ][ ][ ][ ][ ][ ] 小端存储模式
二、用代码判断大小端的两种方式
1.用char*型指针解引用int型数据
int main() {
int a = 1; //0x00000001
char* p = &a; //从a的首字节地址向后读取1字节,所以用char*
if (*p == 0)
printf("大端"); //00 00 00 01 ,读取的第一个字节为0
if (*p == 1)
printf("小端"); //01 00 00 00 ,读取的第一个字节为1
return 0;
}
2.通过联合类型(共用体)判断
联合类型(共用体)链接
union Un {
char a;
int b;
}u; //联合体内定义的变量首字节地址相同
int main() {
u.b = 1; //0x00000001
if (u.a == 0)
printf("大端"); //00 00 00 01 ,读取的第一个字节为0
if (u.a == 1)
printf("小端"); //01 00 00 00 ,读取的第一个字节为1
return 0;
}

