【简单易懂】CAN协议的大小端和其之间的转换方法

  • 一个消息是以N字节(byte)的形式发送的,下面将以含有8字节的消息作为例子进行说明。一个字节包含8比特的二进制数。其他具体的定义内容这里不做解释。
  • 大小端序的区别:简单讲就是信号的起始位置和读取顺序(方向)不同下图,但是信号在一条信息中存储的物理位置是相同的。
  • 【说明】各种方法的起始位置均为bit_0,byte_0,读取方向均按比特和字节增大方向进行。

1. 大端序(Big-Endian)

byte \ bitbit_0bit_1bit_2bit_3bit_4bit_5bit_6bit_7
byte_001234567
byte_189101112131415
byte_21617181920212223
byte_32425262728293031
byte_43233343536373839
byte_54041424344454647
byte_64849505152535455
byte_75657585960616263

起始位置0,终止位置63,方向:左→右∪上→下(↘)


2. 小端序 (Little-Endian、Intel方式)

byte \ bitbit_7bit_6bit_5bit_4bit_3bit_2bit_1bit_0
byte_076543210
byte_115141312111098
byte_22322212019181716
byte_33130292827262524
byte_43938373635343332
byte_54746454443424140
byte_65554535251504948
byte_76362616059585756

起始位置0,终止位置63,方向:右→左∪上→下(↙)


3. Motorola Back方式

byte \ bitbit_7bit_6bit_5bit_4bit_3bit_2bit_1bit_0
byte_76362616059585756
byte_65554535251504948
byte_54746454443424140
byte_43938373635343332
byte_33130292827262524
byte_22322212019181716
byte_115141312111098
byte_076543210

起始位置0,终止位置63,方向:右→左∪下→上(↖)


4.例子

对于同一个信号(黄色区域)采取三种不同的读取方式结果如下:

1.大端序(Big-Endian)

  • 起始位置:第20比特(2byte,4bit)
  • 长度:14bit
    在这里插入图片描述
    将上述信号转换为小端序读取就会变成:

2. 小端序 (Little-Endian、Intel方式)

  • 起始位置:第16比特(2Byte,0bit)
  • 长度:4bit+8bit+2bit(不连续的三段)
    在这里插入图片描述
    将上述信号转换为Motorola Back方式读取就会变成:

3.Motorola Back方式

  • 起始位置:第30比特(3Byte,6bit)
  • 长度:14bit

在这里插入图片描述

以上为自己的理解,如有不对的地方请留言指出谢谢
最终更新2023/03/29

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值