《C语言笔记:大小端模式》

一,计算机存储系统的大小端

  1,大端模式:高地址存放高字节数据,低地址存放低字节数据。

  2,小端模式:高地址存放低字节数据,低地址存放高字节数据。

  3,图示:32位系统

  4,两种判断计算机大小端模式的办法

#include<stdio.h>

union myunion
{
    int a;
    char b;
};

int main(void)
{
    union myunion un;
    //unsigned int c = 1;
    unsigned int c = 0x12345678;
    char *p = (char *)&c;

    //方式一:通过联合体的元素共用内存的特质来判别大小端模式
    un.a = 1;

    if(un.b)
    {
        printf("  小端模式  
");
    }
    else
    {
        printf("  大端模式  
");
    }

    //方式二:通过指针的方式判断
    printf("  *p = 0x%x  
",*p);
    if(*p)
    {
        printf("  小端模式    
");
    }
    else
    {
        printf("  大端模式    
");
    }
        

}

二,通信系统的大小端问题

  1,比如说要通过一个串口发送一个0x12345678给接收方,但是由于串口限制,只能以字节为单位发送,那么久需要发送四次,接收方分四次接收,内容分别是0x12、0x34、 0x56、 0x78。接收方收到这四个字节后需要去重组得到0x12345678而不是得到0x78563412。

  2,所以通信双方需要有一个默契,那就是相互通信之前就规定好,是先发/接收高位还是先发低位/接收。这便是通信中的大小端问题。

  3,一般来说,先发高字节的叫做大端模式,先发低字节的叫做小端模式。但也不一定,可以通信双方相互约定。

原文地址:https://www.cnblogs.com/xuxianshen/p/13976226.html