解码Byte/Bits为二进制

2024-06-16 11:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Prologix GPIB-USB适配器在一个只听模式下,以破译两个设备(半导体相关即测试仪和探测器)之间的通信。在

我能够解码手册中所述的大部分信息,但无法转换其中一个数据,即BIN类别。在

样本数据:

018022
C@A@@@@@@@
Q
O
A
A
019022
CA@A@@@@@@

工具手册:

Manual on How to read Incoming Data

我参与的数据是“C@A公司@@@@@@@“和”CA@A公司@@@@@@" 第一个字节即“C”是传入的命令。 第二个字节可以是“@”或“A”,它实际上表明测试是否通过/失败。在

转换为二进制:

^{pr2}$

结果由字节的低位4位决定,即0000(通过)和0001(失败)。在这里之前我能正确地解码它。在

接下来的8个字节表示BIN类别,在测试期间,如果测试失败,则设置为5;如果测试通过,则设置为1,因此BIN number in“C@A公司@@@@@@@“是1和对应的BIN编号”CA@A公司@@@@@@“设定为5。在

我无法从GPIB适配器生成的数据中解码5和1的值。有人能建议它是否真的可以被解码为5和1。我附上了解释如何读取传入数据的手册。在

长期以来一直坚持这个原则:-(


Tags: 数据字节bin模式公司手册解码适配器
1条回答
网友
1楼 · 发布于 2024-06-16 11:19:59

你可以用解包结构把字节值解码成数字。你需要知道长度(在这个例子中是8字节)以及这个数字是大是小(如果你不知道的话测试一下)。以及数字是有符号还是无符号。在

如果你的绳子是“C@A公司@@@@@@@“二进制数据是以字节3-10为单位的,你可以试试

import struct    
foo="C@A@@@@@@@"
print struct.unpack(">Q", foo[3:11])

这将解码一个8字节长的无符号大端数。有关说明,请参见https://docs.python.org/2/library/struct.html。在

希望这有帮助。在

汉努

相关问题 更多 >