Beschreibung des Binärfeld zu dekodieren ist:Python, wie binärcodierte Dezimalzahl (BCD)
Anrufernummer, mit Druck BCD-Code ausgedrückt wird, und die überzähligen Bits werden gefüllt mit „0 × F“
Ich habe versucht, mit Strukturformat '16c'
zu drucken, und ich bekomme: ('3', '\x00', '\x02', '\x05', '\x15', '\x13', 'G', 'O', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff')
und wenn ich '16b'
verwende, bekomme ich (51, 0, 2, 5, 21, 19, 71, 79, -1, -1, -1, -1, -1, -1, -1, -1)
. Und es ist nicht korrekt, ich sollte die Telefonnummer bekommen, und die obigen Nummern sind ungültig.
print struct.unpack_from('>16b', str(data.read()),offset=46)
Oben ist Code, der nicht funktioniert hat, und ich bekomme ungültige Zahlen. Mit welchem Format soll ich das 16-Byte-Feld entpacken und BCD-Code konvertieren?
Vielen Dank. – Whit3H0rse
+1 Sehr elegant und pythonisch! – Kos