二进制字段的描述是:
主叫号码,用压缩的BCD码表示,剩余位用“0xF”填充
我尝试使用 struct 格式打印,'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 码?