大端模式和小端模式

mac2022-06-30  21

目录

大端模式和小端模式 0x123456在内存中的存储方式为什么会有大小端之分呢判断机器的字节序

大端模式和小端模式

0x123456在内存中的存储方式

大端模式

低地址 -----> 高地址 0x12 | 0x34 | 0x56

小端模式

低地址 -----> 高地址 0x56 | 0x34 | 0x12

不难看出大端模式比较符合人的直观认识。

为什么会有大小端之分呢

一开始是由于不同架构的CPU处理多个字节数据的顺序不一样,比如x86的是小段模式,KEIL C51是大端模式。但是后来互联网流行,TCP/IP协议规定为大端模式,为了跨平台通信,还专门出了网络字节序和主机字节序之间的转换接口(ntohs、htons、ntohl、htonl)大小端模式各有优势:小端模式强制转换类型时不需要调整字节内容,直接截取低字节即可;大端模式由于符号位为第一个字节,很方便判断正负。

判断机器的字节序

基本思想室根据数据截断来判断是大端还是小端

// 通过强制类型转换截断 BOOL IsBigEndian() { int a = 0x1234; char b = *(char*)&a; if(0x12 == b) { return TRUE; } return FALSE; } // 利用联合体共享内存的特性,截取低地址部分 BOOL IsBigEndian() { union NUM { int a; char b; }num; num.a = 0x1234; if(0x12 == num.b) { return TRUE; } return FALSE; }

转载于:https://www.cnblogs.com/huluwa508/p/10827280.html

相关资源:解析大端模式和小端模式
最新回复(0)