• 《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,一般来说,先发高字节的叫做大端模式,先发低字节的叫做小端模式。但也不一定,可以通信双方相互约定。

  • 相关阅读:
    如何在windows系统下安装swoole(Docker环境)
    如何在windows系统下安装swoole(cgywin环境)
    Docker的介绍及安装
    Java50道经典习题-程序48 数字加密
    Java50道经典习题-程序49 子串出现的个数
    Java50道经典习题-程序50 文件IO
    从键盘录入一个数据,输出对应的九九乘法表
    冒泡排序
    直接排序
    Math类的三个方法比较: floor() ceil() round()
  • 原文地址:https://www.cnblogs.com/xuxianshen/p/13976226.html
Copyright © 2020-2023  润新知