首页 > 解决方案 > 不同数据字节格式的含义

问题描述

从 CAN DBC 文件中,我获取少量 Can 消息并为 Can 消息的每个信号分配值,然后对其进行编码以发送 can 消息。

对于每个信号,数据以不同的方式编码(下面列出了几个示例)

Data1--> b'\x00\x00d\x01P\x00\x00\x01'
Data2--> b'\x01\x81\x0f\x11\xc8\x00\x00\x00'
Data3--> b'\x00\x00d\x01P\x00\x00\x01'

我的疑问是.. x00d,x01P,x00d 这些数据的含义是什么,它表示什么剂量(P 和 d 是什么)。

请让我知道为什么数据字节采用这种格式(例如:x00d,x01P,x00d)以及如何以正常/通常格式获取数据(例如:Data2--> b'\x01\x81\x0f\x11\xc8 \x00\x00\x00' )

标签: pythoncan-busautomotive

解决方案


您在字节串中看到的dP值是碰巧代表 ASCII 字符的字节。所以 Python 以这种方式显示它们。如果您想查看所有字节的原始十六进制值,您可以bytes.hex()在字节串上调用该方法,它会为您提供如下输出:('0000640150000001'其中 64 replacesd50replaces P)。

但是如果你只是传递字节对象,你可能不需要做任何事情。期望字节对象的代码会发现b'd'与 一样可以接受b'\x64',因为它们是编写相同字符的两种方式。


推荐阅读