首页 > 其他 > 详细

大端小端问题

时间:2020-01-04 17:19:05      阅读:94      评论:0      收藏:0      [点我收藏+]

大端字节序与小端字节序

在计算机中,多字节对象被存储在连续的字节序列中,这就引出了存储字节顺序的问题。分为两种模式:1.高位字节在前,也就是大端字节序(Big Endian),或者2.低位字节在前,也就是小端字节序(Little Endian)。
例如对于int n = 0x01020304;,假设int大小为4字节,并且该int对象的地址为0x100,那么在大端机器和小端机器上内存布局如下图:
技术分享图片

测试自己的机器

测试系统是大端字节序还是小端字节序,可以利用C++中union的特性,这里还有个小细节那就是在C++中struct,union,enum类型在使用的时候不必带这几个关键字(在C中是需要的):

#include <iostream>
#include <cstdint>

union Foo {
    int16_t whole;
    int8_t parts[2];
};

int main(int argc, const char* argv[]) {
    Foo foo;
    foo.whole = 0x0102;

    if (0x01 == foo.parts[0]) {
        std::cout << "Big Endian Machine" << std::endl;
    } else {
        std::cout << "Little Endian Machine" << std::endl;
    }

    return 0;
}

网络字节序

在TCP/IP中规定网络字节序就是大端字节序。

大端小端问题

原文:https://www.cnblogs.com/HachikoT/p/12149525.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!