一、字节序

计算机硬件存储数据有两种方式:大端字节序(big endian)和小端字节序(little endian)。

小端 字节序 :即低地址存低位字节,或者说在起始地址存放低位字节(Intel的机器都是采用的这种存储方法,因此有时候直接称为Intel字节序);

大端字节序 :即低地址存高位字节,或者说在起始地址存放高位字节(人类读写数值的方法,网络字节序也是这种字节序);

注:只有多字节数据的存取才牵涉到字节序,单字节数据存取不牵扯字节序问题。

二、网络字节序

在网络协议中,TCP/IP协议使用大端字节序,即高位先存的方式;

htons (host to net short):将主机字节序(unsigned short, 16位)转换为TCP/IP网络字节序;

htonl (host to net long):将主机字节序(unsigned long,32位)转换为TCP/IP网络字节序;

什么是 网络 字节 顺序 和主机 字节 顺序 呢?在进行 网络 编程时,需要进行转换以统一“格式” 简述: 网络 字节 顺序 NBO(Network Byte Order):按从高到低的 顺序 存储,在 网络 上使用统一的 网络 字节 顺序 ,可以避免兼容性问题。主机 字节 顺序 (HBO,Host Byte Order):不同的机器HBO不相同,与CPU设计有关 详解:不同的CPU有不同的 字节序 类型 这些字 举一个例子,比如我们要保存一个数字:, 通过它在内存中的分布位置来说明大 小端 存储的差异。 大端 模式(Big-Endian):就是高位 字节 排放在内存的低地址端,低位 字节 排放在内存的高地址端低内存地址 -------------> 高内存地址 小端 模式(Little-Endian):就是低位 字节 排放在内存的低地址端,高位 字节 排放在内存的高地址端。低内存地址 -------------> 高内存地址可以很明显看到, 大端 模式与我们直观非常相近,因为我们书写习惯是将高位写在前面,低位写在后面。 参考博客: Intel 格式与Motorola格式的区别。 主要是对上面提到的博客做下笔记,结合其他文章,转化为自己的理解写下来。直接阅读链接博客时请结合评论内容理解,博客内使用的图片有误。 1.多数厂商定义的CAN总线 字节 发送 顺序 均为先发送LSB,最后发送MSB。即:首先发送byte0(LSB),然后byte1,byte2,……(MSB)的发送 顺序 。 (链接博客有人指出:主机厂发送CAN报文数据从byte0~byte7,并不是针对信号的,而是针对CAN2.0规范,CAN2.0报文格式和时序就是从byte0到b https://blog.csdn.net/qq_41256212/article/details/95477467 在定义CAN通信矩阵或制作dbc时,我们需要知道报文的 字节 排列 顺序 字节 的排列 顺序 有2种,一种是 Intel 的排列 顺序 ,另一种是Motorola的排列 顺序 ,就跟大 小端 字节 排序是一样的。下面笔者将简单介绍这2种 字节 排序的区别。 Intel 格式: Intel 格式跟 小端 格式一样,低地址代表低 字节 ,高地址代表高 字节 顺序 的详细解释草木瓜 2006.7.26一、基本概念位的概念:在计算机中,一个0或1称为一位(bit)。 字节 :连续的八位称为一个 字节 (Byte), 字节 是计算机中可单独处理的最小单位。即以 字节 为基本单位来解释信息,规定1个 字节 是8个二进制位。通常1个ASCII码用1个 字节 存放,1个汉字用2个 字节 存放,双精度浮点实数用8个 字节 存放。下面列表 C语言 中定义类型所占 字节 以及数据范围。 大端 地址:内存高位地址存放数据的低 字节 ,内存低位地址存放数据的高 字节 。总结:大--高低高低 小端 地址:内存高位地址存放数据的高 字节 ,内存低位地址存放数据的低 字节 。总结:小--高高低低 网络 字节序 :按照 大端 地址排列 intel 主机 字节序 :按照 小端 地址排列... CAN数据的传输 顺序 :从上到下,从左到右。 字节序 和位序分为: 大端 小端 大端 :高 字节 存放在低地址,低 字节 存放在高地址( 大端 从左往右) 小端 :低 字节 存放在低地址,高 字节 存放在高地址(低放低, 大端 的逆序)CAN数据的位序为 大端 CAN数据的 字节序 可以定义Motorola: 大端 字节序 Intel 小端 字节序 。 结构体是一种数据的归类方式,相比数组或变量更具有整体全面性,例如一个数组只可以放一些按照元素 顺序 存放的单元变量,即 buffer = {x, x, x, x, x&hell ip ;},i 有多大,数组内元素就有多少。那么我们这时候如果我们用这个数组来接收串口接收信息,信息的格式是: 数据头 ->数据长度 ->数据区 ->数据校验 ->数据尾