Номер вызывающего абонента, выраженный в виде сжатого BCD-кода, а лишние биты заполняются цифрами «0xF».
Я попытался напечатать в формате структуры '16c' и получил: ('3', '\x00', '\x02', '\x05', '\x15', '\x13', 'G', 'O', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff'), и если я использую '16b', я получаю (51, 0, 2, 5, 21, 19, 71, 79, -1, -1, -1, -1, -1, -1, -1, -1). И это неправильно, мне нужно получить номер телефона, а цифры выше недействительны.
Код: Выделить всё
print struct.unpack_from('>16b', str(data.read()),offset=46)
Подробнее здесь: https://stackoverflow.com/questions/116 ... ecimal-bcd
Мобильная версия