python如何输出二进制,Python,如何解码二进制编码的十进制(BCD)

Python,如何解码二进制编码的十进制(BCD)时间:2012-07-26 12:09:00

标签:pythonstructbinarydecodebcd

二进制字段的描述是:

  

来电号码,用压缩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代码?

3 个答案:

答案 0 :(得分:16)

BCD码每个数字使用4位,通常只编码0到9位数。因此序列中的每个字节包含2个数字,每4位信息1个。

以下方法使用生成器生成这些数字;我假设0xF值意味着没有更多的数字要跟随:

def bcdDigits(chars):for char in chars:char = ord(char)for val in (char >> 4, char & 0xF):if val == 0xF:returnyield val

这里我使用right-shift operator将最左边的4位向右移动,使用bitwise AND来选择最右边的4位。

演示:

>>> characters = ('3', '\x00', '\x02', '\x05', '\x15', '\x13', 'G', 'O', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff')>>> list(bcdDigits(characters))[3, 3, 0, 0, 0, 2, 0, 5, 1, 5, 1, 3, 4, 7, 4]

该方法适用于c输出;如果直接传递整数,则可以跳过方法中的ord调用(但改为使用B无符号变量)。或者,您可以直接从文件中读取这16个字节,并直接将此函数应用于这些字节而不使用struct。

答案 1 :(得分:0)

a = b'\x12\x34\x5f'def comp3_to_int(a):b = a.hex()c = int(b[0:len(b)-1])if b[len(b)-1:] == 'd':c = -creturn c

答案 2 :(得分:0)

Python 3.x内置了字节对象。

>>> c = b'3\x00\x02\x05\x15\x13GO\xff\xff\xff\xff\xff\xff\xff\xff'>>> c.hex()'330002051513474fffffffffffffffff'

然后返回:

>>> c = "9F1A020840">>> bytes.fromhex(c)b'\x9f\x1a\x02\x08@'
python如何输出二进制 - CSDN语法 - 如何在Python中表达二进制文字? - ITranslater怎样用python进行二进制,八进制,十进制转换-百度经验(转)从Python的0.1输出0.1000000000000001说浮点数的 ...[PYTHON]如何把一个图片文件以二进制显示出来 ...在 Python 中读取二进制文件 | D栈 - Delft Stack在python中生成随机二进制数 - VoidCC十进制大整数转化为二进制输出 - 云+社区 - 腾讯云python这个哪里错了,格式化输出389的二进制,十进制 ...Python 十进制转换为二进制 高位补零怎样用python进行二进制、八进制、十进制、十六进制转换(举例计算网络号)python获取二进制文件流,压缩并下载Python二进制文件转为数组python二进制流文件转二维码使用python读取二进制文件python文件二进制加密python十进制转八进制_怎样用python进行二进制,八进制,十进制转换python 输入一个自然数 输出二进制,如何在Python中写入原始二进制数据?Python的bit_length函数来二进制的位数方法python 实现二进制和十进制相互转换python二进制转十进制算法_python进制转换:十进制转二进制的用法Python中不同进制的语法及转换方法分析python读写二进制文件的方法python实现整数的二进制循环移位Python二进制位运算python 十进制转二进制输出固定长度位数,带有都好格式的数据格式Python解析二进制文件Python将十进制数值和二进制数值进行相互转换python处理二进制数据
如何看待摩羯女上升白羊小组《鬼咬鬼》在线观看流畅摩尔庄园食谱大全菜谱红楼梦两地生孤木每日书摘9漫画堆安卓版下载win10系统开启自带游戏的还原方案零售商业财经专栏主页参观红色教育基地深化党性主题教育日本上班族的英文soul聊天软件真实吗睡多长时间最好执剑江湖怎样快速进阶石家庄邮政编码查询表石家庄长安区房价刚刚中国最有前途的30座城市排名公布2020城市商业魅力榜发布约妹中tf是什么意思按摩里tf啥意思精灵之隐藏的大师简介精灵之宝可梦大师简介