Описание бинарного поля:
Caller number, expressed with compressed BCD code, and the surplus bits are filled with “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)
Выше приведен код, который не работал, и я получаю недопустимые числа. В каком формате я должен распаковать это 16-байтовое поле и как преобразовать код BCD?