什么是大端模式和小端模式

什么是大端模式和小端模式前言 在串口等串行通信中 一次只能发送 1 个字节 这个时候要发送一个 Int 类型的数就遇到问题 int 类型有 4 个字节 是按照 byte0 byte1 byte2 byte3 这样的顺序发送 还是按照 byte3 byte2 byte1 byte0

大家好,欢迎来到IT知识分享网。

前言:

在串口等串行通信中,一次只能发送1个字节。这个时候要发送一个Int类型的数就遇到问题。int 类型有4个字节,是按照:byte0 byte1 byte2 byte3这样的顺序发送,还是按照byte3 byte2 byte1 byte0 这样的顺序发送?如果发送方和接收方没有约定按照一定的规格进行通信,就会出现通信异常。这就是大端模式和小端模式。

什么是大端模式和小端模式

我们现在提到的大小端模式,更多的是指计算机存储系统的大小端。在一个32位的二进制在内存中存储时有两种分布方式:高字节对应地址(大端模式),高字节对应高地址(小端模式)。

以大端模式存储,其内存布局如下:

什么是大端模式和小端模式

以小端模式存储,其内存分布如下

什么是大端模式和小端模式

在我们敲代码的时候,不知道当前环境是大端模式还是小端模式,就需要用代码来检测当前系统的大小端问题。

使用union来测试机器的大小端模式

#include <stdio.h> union mynuion{ int a; char b; }; // 大端模式,数据的低位保存在内存的高地址中 // 小端模式,数据的低位保存在内存的低地址中 int is_little_endian(void) { union mynuion u; u.a = 1; return u.b; } int main() { int temp; temp = is_little_endian(); if (temp == 1){ printf("is little endian\r\n"); }else{ printf("is big endian\r\n"); } return 0; }

运行结果如下,本人在ubuntu系统上编译相关的代码,从结果来看该系统是小端模式

什么是大端模式和小端模式

获取相关代码方式

什么是大端模式和小端模式

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/171528.html

(0)
上一篇 2025-02-25 12:45
下一篇 2025-02-25 13:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信