Да, я использую Python 2, что означает, что ведущий ноль будет интерпретировать int как восьмеричное. Углубившись в то, как отправляется сообщение, я понял, что вместо передачи начальных нулей, я просто передаю '625' в качестве идентификатора и изменил аргументы функции пакета на pad с двумя байтами pad. Это добилось цели, просто нужно было добавить условие, где любой int, переданный с менее чем 3 цифрами, дополняется, например так:
>>> from struct import *
>>> pack(b'<H', 625)
'q\x02'
>>> pack(b'<xxH', 625)
'\x00\x00q\x02'
Итак, я создал условие в модуле сообщений для использования одного или другого в зависимости от размера ID:
def deviceNumber(self, device_number):
if len(str(device_number)) > 3 :
self._payload[1:3] = pack(b'<H', device_number)
else :
self._payload[1:3] = pack(b'<xxH', device_number)
Может быть, есть лучший способ, но он работает, этого пока достаточно!