大小端介绍及其检测方法

来源:互联网 发布:财务部数据流程图 编辑:程序博客网 时间:2024/06/10 15:04

大小端介绍

  1. 大端存储
    将一个数据的低字节序的内容存储到高地址处,高字节序的内容存储到低地址处。

这里写图片描述

2.小端存储
将一个数据的低字节序内容存储到低地址处,将高字节序的内容存储到高地址处。

这里写图片描述

检测方法

算法一:

取出一个整型数的地址,并拿出第一个字节判断是高字节序还是低字节序

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int check_sys(){    int a = 1;    char *p = (char *)&a;     //取地址并取出第一个字节进行    return *p;                //返回第一个字节,是1为小端存储,是0为大端存储}int main(){    int ret = check_sys();    if (ret == 1)    {        printf("小端存储\n");    }    else if (ret == 0)    {        printf("大端存储\n");    }    return 0;}

算法二:

利用共用体成员共用一块空间,取出第一个字节的地址,进行判断

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int check_sys(){    union  Un    {        char c;        int i;    }u;    u.i = 1;             //整型和字符型共用同一块空间,取出第一个字节的地址    return  u.c;}int main(){    int ret = check_sys();    if (ret == 1)    {        printf("小端存储\n");    }    else if (ret == 0)    {        printf("大端存储\n");    }    return 0;}

运行结果:

这里写图片描述

注:以上结果在win 10 vs2013 环境下测试