Python, comment décoder décimale codée Binaire (BCD)

Description du champ binaire est:

Numéro appelant, exprimé comprimé BCD code, et le surplus de bits sont remplis de “0xF”

J'ai essayé d'imprimer avec struct format '16c' et j'obtiens: ('3', '\x00', '\x02', '\x05', '\x15', '\x13', 'G', 'O', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff') et si j'utilise '16b' - je obtenir (51, 0, 2, 5, 21, 19, 71, 79, -1, -1, -1, -1, -1, -1, -1, -1). Et il n'est pas correct, je devrais obtenir un numéro de téléphone, et les chiffres ci-dessus ne sont pas valides.

print struct.unpack_from('>16b', str(data.read()),offset=46)

Ci-dessus est le code qui ne fonctionne pas et j'ai des numéros non valides. Avec quel format dois-je déballez que 16 octets du champ et comment convertir BCD code ?

InformationsquelleAutor Whit3H0rse | 2012-07-26