python - 不同数据字节格式的含义
问题描述
从 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' )
解决方案
您在字节串中看到的d
和P
值是碰巧代表 ASCII 字符的字节。所以 Python 以这种方式显示它们。如果您想查看所有字节的原始十六进制值,您可以bytes.hex()
在字节串上调用该方法,它会为您提供如下输出:('0000640150000001'
其中 64 replacesd
和50
replaces P
)。
但是如果你只是传递字节对象,你可能不需要做任何事情。期望字节对象的代码会发现b'd'
与 一样可以接受b'\x64'
,因为它们是编写相同字符的两种方式。
推荐阅读
- regex - 在字符串中查找多个
- php - Apache .htaccess 2 个方向
- php - 无论URL如何,如何运行相同的php脚本
- c++ - 我可以在鼠标 HID 描述符中设置一个相对轴和一个绝对轴吗?
- c++ - 在树中删除但只有一些节点
- sql - 使用 drop 命令和 create 命令的 SQL 错误
- vim - 是否可以在以下至少一个编辑器中使用 markdown 语法中的多色标题:Sublime Text 3、Vim 或 Visual Studio Code?
- javascript - d3 图表中未显示轴标签
- android - Freshchat push notification via Firebase (Android)
- python-3.x - Beautiful Soup Error: Trying to retrieve data from web page returns empty array