C++之如何判断大端小端

2021年3月20日 631点热度 3人点赞 0条评论

什么是大端小端

所谓的大端小端就是数据对齐的端模式,也就是计算机中采用的两种常用的字节存储机制,与CPU相关。

小端: 低位字节(也就是数据)放在内存的低地址端,高位字节放在内存的高地址端。
大端: 高位字节(也就是数据)放在内存的低地址端,低位字节放在内存的高地址端。

举个例子:

0x123456在内存中是怎么存储的呢?

  • 大端模式
低地址---------->高地址
0x12 | 0x34 | 0x56
  • 小端模式
低地址---------->高地址
0x56 | 0x34 | 0x12

如何判断大端小端

方法一 强制类型转换

用字符变量b来获取数字变量a的低地址部分,然后来进行判断。

bool isBigEndian()
{
    short a=0x1234;
    char b=*(char *)&a;
    if(0x12==b) return true;
    return false;
}

方法二 利用联合体

联合体内存储方式是小端。联合体内共享同一块内存,b会获取a的低地址数据,然后可以根据此进行判断。

bool isBigEndian()
{
    union NUM
    {
        short a;
        char b;
    }num;

    num.a=0x1234;

    if(0x12==num.b) return true;
    return false;
}

agedcat_xuanzai

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论