Python 处理struct pack/unpack函数中的前导零?

Python 处理struct pack/unpack函数中的前导零?,python,struct,endianness,pack,leading-zero,Python,Struct,Endianness,Pack,Leading Zero,我正在使用Python库与传感器进行ANT+无线通信。 通信通过与ID配对完成,ID是一个4-5位数长的数字。 在我测试的其中一台设备的ID为“00625”之前,一切正常 跟踪代码时,问题的根源是用于编码和解码ANT+协议消息字节的struct pack/unpack函数 来自结构导入的>>* >>>pack(b'是的,我使用的是Python 2,这意味着前导零将使int被解释为八进制。 深入研究消息的发送方式,我找到了答案,我没有传递前导零,而是传递'625'作为ID,并将pack函数参数改为

我正在使用Python库与传感器进行ANT+无线通信。 通信通过与ID配对完成,ID是一个4-5位数长的数字。 在我测试的其中一台设备的ID为“00625”之前,一切正常

跟踪代码时,问题的根源是用于编码和解码ANT+协议消息字节的struct pack/unpack函数

来自结构导入的
>>*

>>>pack(b'是的,我使用的是Python 2,这意味着前导零将使int被解释为八进制。 深入研究消息的发送方式,我找到了答案,我没有传递前导零,而是传递'625'作为ID,并将pack函数参数改为两个pad字节的pad。这就成功了,只需添加一个条件,即传递的任何小于3位的int都会被填充,如下所示:

来自结构导入的
>>*

>>>打包(b'是否可以先将00625打包为字符串'00625',然后解包结果?@JYCH no,抛出
struct。错误:无法将参数转换为整数。
。在Python中,十进制整数文本中不允许前导零。您需要以某种方式将它们去掉。i中
00625
文本的代码源是什么t?您必须使用Python 2。带前导零的整数文本被视为八进制。在Python 3中,这已被删除,但
0o
前缀仍然存在。无论如何,您首先是如何将此整数放入代码中的?归根结底,这是问题所在,而不是
struct.pack
。如果它以字符串形式出现,您应该使用de>int()
,而不是
eval()
,以及
raw\u input()
而不是
input()
。相关: