【基础知识系列】用示例一窥字节序-大小端

本文通过代码示例,在Mac与Android开发环境下测试主机字节序,借助IDE分析Int整型在内存的存储,直观展示数据存储情况以加深对大小端字节序的理解。同时介绍了大小端字节序的概念、由来,以及网络字节序,还给出相关注意事项和参考文章。

代码示例

示例代码分别在mac与android的开发环境下测试主机的字节序,还有通过IDE分析一个Int整型在内存的实际存储,于"肉眼可视"的方式去观察数据在内存的存储情况,加深与理解字节大小端。代码示例了两种方式判断主机字节序是否为小端字节序

mac 环境示例

代码

#include <iostream>

using namespace std;

bool isLittleEndian() {
    int i = 1;
    //强转char指针,即指向int的首字节,可访问int的首字节的内容/值
    char *a = (char *) &i;
    return *a == 1;
}

bool isLittleEndian2() {
    union {
        int i;
        char c;
    } un;
    //char跟int是共用内存块,然后内存对的,即char跟int的首字节是同一块内存空间
    un.i = 1;
    return un.c == 1;
}

int main() {

    int x = 0x12345678;
    char *p = (char *) &x;

    cout << "逻辑上的顺序: 0x 12 34 56 78" << endl;
    printf("内存中的顺序: 0X %0x % 0x %0x %0x \n", p[0], p[1], p[2], p[3]);

    cout << "当前主机序字节序是: ";
    if (isLittleEndian()) {
        cout << "小端"<< endl;
    } else {
        cout << "大端" << endl;
    }

    cout << "当前主机序字节序是: ";
    if (isLittleEndi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值