Description of the binary field is:
Caller number, expressed with compressed BCD code, and the surplus bits are filled with “0xF”
I have tried to print with struct format '16c'
and I get: ('3', '\x00', '\x02', '\x05', '\x15', '\x13', 'G', 'O', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff')
and if I use '16b'
i get (51, 0, 2, 5, 21, 19, 71, 79, -1, -1, -1, -1, -1, -1, -1, -1)
. And it is not correct, I should get phone number, and numbers above are invalid.
print struct.unpack_from('>16b', str(data.read()),offset=46)
Above is code that didn't work and I get invalid numbers. With what format should I unpack that 16 byte field and how to convert BCD code ?
hex()
is a method ofbytes
(whicha
is in above code, assumingcomp3_to_int(a)
is called somewhere). See docs.python.org/3/library/stdtypes.html#bytes.hex – Cudlip