通信大小端_小白学习笔记

  • 原因
  • 什么是大端小端
  • 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相关推荐

  1. 通信大小端字节序相关问题总结

    [备注:本文主要是将最新box项目中,遇到的问题做以总结梳理,便于加深印象和后续查阅.本文相关资料主要来源于网络,包括转载的一些资料] 遇到问题: 1.何为大.小端存储. 2.若协议中提及" ...

  2. c 和java通讯大小端问题处理_记录一个如何解决java与C++socket通信的大小端问题...

    问题背景 oracle jdk默认的socket通信发送int类型数据高位优先.下面是jdk包内部相关源码.(模拟)os.write((len >>> 24) & 0xFF) ...

  3. java大小端字节流解析_记录一个如何解决java与C++socket通信的大小端问题

    问题背景 oracle jdk默认的socket通信发送int类型数据高位优先.下面是jdk包内部相关源码.(模拟) os.write((len >>> 24) & 0xFF ...

  4. 汇编码转机器码万能转换工具(Intel 32/64、ARM 大小端、Thumb大小端、ARM V8大小端、Thumb V8大小端、AArch64)

    汇编码转机器码万能转换工具(Intel 32/64.ARM 大小端.Thumb大小端.ARM V8大小端.Thumb V8大小端.AArch64) 众所周知,计算机核心处理器就是CPU是计算机的重要组 ...

  5. 计算机存储的大小端模式解析

    ---------------------------------------------------------------------------------------------------- ...

  6. 大小端 Big-Endian 与 Little-Endian

    应该说没做底层开发(硬件或驱动)的人很可能不会彻底理解大小端的概念,大小端不是简单的一句"大端在前"还是"小端在前"能够概括的问题.在cpu, 内存, 操作系统 ...

  7. Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园

    什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...

  8. 什么时候要进行大小端字节序的转换?

    什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...

  9. 网络大小端模式的转换

    在网络传输过程中自定义协议,就显得比较重要了,比如size等,前提是你要跨平台. 转换函数如下 void convertToLittleEndian(unsigned int *data) {    ...

最新文章

  1. TCP握手和传输的一次观察
  2. 2019/4/4 动态规划
  3. layer.open增添模板效果母页面
  4. 语言结构体在内存的分布_结构体内存对齐,这篇文章给你彻底搞会!(干货收藏)...
  5. Jest 测试框架使用的学习笔记
  6. 安卓相机 高帧率_Android MediaCodec和摄像头:如何实现更高的帧速率从相机获取帧原始数据?...
  7. android录屏软件冲突,关于Android同时录制多个录像的问题
  8. 面向对象的 飞鸽传书 思想
  9. 程序架构探讨—005 应用服务器集群的伸缩性之反向代理负载均衡
  10. 精通Python网络爬虫:核心技术、框架与项目实战.1.4 网络爬虫的类型
  11. Yaniv Erlich:DNA 很可能是人类终极的储存设备
  12. 轮播图的效果实现小米商城和京东商城
  13. Linux:什么是 i386、i586、 i686、noarch?
  14. sprintf函数的用法
  15. 〖教程〗Winrm远程命令/WinrmCmd/端口复用后门/Windows密码爆破
  16. [人工智能-深度学习-65]:环境搭建 - Nvidia最新显卡性能排名
  17. 轻健身餐的市场前景如何?如何选择一个投资小、美食和健身餐清淡的品牌?
  18. underflow, overflow, approximation and rounding error
  19. Android 解决TextView排版参差不齐的问题
  20. SQL Server2019还原.bak文件为数据库且更改数据库的存放位置

热门文章

  1. 剑指Offer II --- 2021/9/2
  2. 计算化学领域的黑科技
  3. ucsd计算机科学,UCSD计算机科学博士排名,谨记得细致看
  4. 可供量、现有量、承诺量
  5. 分享2个优质牛肉干的挑选方法
  6. tensorflow serving部署keras或tf2.0模型
  7. java读入一个不确定长度的一维数组
  8. 操作符—奇奇怪怪的表达式
  9. microserver gen10 更换硬盘,解决无法开机问题
  10. eth_clockgen.v