c语言:24、大小端序

1、字节序(什么大端序小端序)

在这里插入图片描述

大端序:更多用于网络传输(跟网络传输协议规定有关)
小端序:cpu的数据处理

2、C语言判断当前环境字节序

//判断当前字节序,返回0表示小端序,返回1表示大端序
int IsBigEndian(){
    union {
        char c[2];
        short s;
    } value = {.s=0x0100};
    return value.c[0] == 1;
}

//判断当前字节序(指针版本)
int IsBigEndian2(){
    short s = 0x100;
    char *p = (char *)&s;
    return p[0] == 1;
}

运行结果
在这里插入图片描述

3、C语言整型端序切换

//字节序切换
int ToggleEndian(int original){
    union {
        char c[4];
        int i;
    } value = {.i=original};
    char temp = value.c[0];
    value.c[0] = value.c[3];
    value.c[3] = temp;
    temp = value.c[1];
    value.c[1] = value.c[2];
    value.c[2] = temp;
    return value.i;
}

//字节序调换(指针版本)
int ToggleEndian2(int original){
    char *p = (char *)&original;
    char temp = p[0];
    p[0] = p[3];
    p[3] = temp;
    temp = p[1];
    p[1] = p[2];
    p[2] = temp;
    return original;
}

int original = 0X12345678;
printf("%x, %X", ToggleEndian(original) );

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值