通信大小端_Motorola和Intel
通信大小端_小白学习笔记
- 原因
- 什么是大端小端
- CAN解析
- Motorola格式:
- Intel格式
原因
最近刚进入自动驾驶领域,调试线控底盘时遇到CAN的解析问题,在此记录自己学到的知识点。
什么是大端小端
1.大端模式(big endian),小端模式(little endian),endianness翻译过来是字节顺序,因此大小端均指字节顺序,非位顺序。
2.在计算机内存/硬盘中,数据是以字节为单位的,二进制在内存中存储时有2种分布方式:高字节对应低地址(大端模式)、高字节对应高地址(小端模式)。有些CPU公司用大端,譬如51单片机,有些公司用小端,如ARM。用数据0x12345678来做演示,要存入32位系统的内存地址为0000~0003,,首先明确,这个数据的最高有效字节是12,最低是78,低地址是0000,高地址是0003,大端小端存储方式分别如下:
| 地址 | 0000 | 0001 | 0002 | 0003 |
|–|–|–|–|–|–|
| 大端 | 12 | 34 | 56 | 78 |
| 小端 | 78 | 56 | 34 | 12 |
3.在串口等串行通信中,一次只能发送一个字节,比如要发一个int类型的数据,有4个字节,这时就面临是按照:byte0, byte1, byte2, byte3,还是按照byte3, byte2, byte1, byte0,收发必须按照同样的字节顺序来通信。
CAN解析
在解析CAN数据时,尽量确认定义的通信协议大小端问题,大端(Motorola),小端(Intel),可从提供CAN协议处获取,也可用CAN卡读取数据,根据定义推导。
Motorola格式:
在这一帧数据中,以第一个条数据数据为例,发送顺序为:14,15,0,1,2,3,4,5,6,7,bit位是不连续的,但是发送的字节序体现出的信号值是连续的。例如设置行驶里程998km,信号值在报文中为3E,60,00,00,00,00,00,00。
Intel格式
在这一帧数据中,同样以第一个条数据数据为例,发送顺序为:0,1,2,3,4,5,6,7,8,9,bit位是由低到高连续的,但是发送的字节序体现出的信号值非连续,例如设置行驶里程998km,信号值在报文中为E6,03,00,00,00,00,00,00。
通信大小端_Motorola和Intel相关推荐
- 通信大小端字节序相关问题总结
[备注:本文主要是将最新box项目中,遇到的问题做以总结梳理,便于加深印象和后续查阅.本文相关资料主要来源于网络,包括转载的一些资料] 遇到问题: 1.何为大.小端存储. 2.若协议中提及" ...
- c 和java通讯大小端问题处理_记录一个如何解决java与C++socket通信的大小端问题...
问题背景 oracle jdk默认的socket通信发送int类型数据高位优先.下面是jdk包内部相关源码.(模拟)os.write((len >>> 24) & 0xFF) ...
- java大小端字节流解析_记录一个如何解决java与C++socket通信的大小端问题
问题背景 oracle jdk默认的socket通信发送int类型数据高位优先.下面是jdk包内部相关源码.(模拟) os.write((len >>> 24) & 0xFF ...
- 汇编码转机器码万能转换工具(Intel 32/64、ARM 大小端、Thumb大小端、ARM V8大小端、Thumb V8大小端、AArch64)
汇编码转机器码万能转换工具(Intel 32/64.ARM 大小端.Thumb大小端.ARM V8大小端.Thumb V8大小端.AArch64) 众所周知,计算机核心处理器就是CPU是计算机的重要组 ...
- 计算机存储的大小端模式解析
---------------------------------------------------------------------------------------------------- ...
- 大小端 Big-Endian 与 Little-Endian
应该说没做底层开发(硬件或驱动)的人很可能不会彻底理解大小端的概念,大小端不是简单的一句"大端在前"还是"小端在前"能够概括的问题.在cpu, 内存, 操作系统 ...
- Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园
什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...
- 什么时候要进行大小端字节序的转换?
什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...
- 网络大小端模式的转换
在网络传输过程中自定义协议,就显得比较重要了,比如size等,前提是你要跨平台. 转换函数如下 void convertToLittleEndian(unsigned int *data) { ...
最新文章
- TCP握手和传输的一次观察
- 2019/4/4 动态规划
- layer.open增添模板效果母页面
- 语言结构体在内存的分布_结构体内存对齐,这篇文章给你彻底搞会!(干货收藏)...
- Jest 测试框架使用的学习笔记
- 安卓相机 高帧率_Android MediaCodec和摄像头:如何实现更高的帧速率从相机获取帧原始数据?...
- android录屏软件冲突,关于Android同时录制多个录像的问题
- 面向对象的 飞鸽传书 思想
- 程序架构探讨—005 应用服务器集群的伸缩性之反向代理负载均衡
- 精通Python网络爬虫:核心技术、框架与项目实战.1.4 网络爬虫的类型
- Yaniv Erlich:DNA 很可能是人类终极的储存设备
- 轮播图的效果实现小米商城和京东商城
- Linux:什么是 i386、i586、 i686、noarch?
- sprintf函数的用法
- 〖教程〗Winrm远程命令/WinrmCmd/端口复用后门/Windows密码爆破
- [人工智能-深度学习-65]:环境搭建 - Nvidia最新显卡性能排名
- 轻健身餐的市场前景如何?如何选择一个投资小、美食和健身餐清淡的品牌?
- underflow, overflow, approximation and rounding error
- Android 解决TextView排版参差不齐的问题
- SQL Server2019还原.bak文件为数据库且更改数据库的存放位置