该二进制字段的描述如下:
使用压缩BCD编码表示的呼叫者号码,剩余位填充为“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代码转换为什么?