免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6854 | 回复: 4
打印 上一主题 下一主题

【求助】python读取二进制文件的显示问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-05 22:27 |只看该作者 |倒序浏览
本帖最后由 xiaoquwl 于 2010-03-05 22:39 编辑

类似于用open读取二进制文件:
  1. rdfile = open(fileName,'rb')
复制代码
读出的是一个字符串,类似于:
  1. '\x00\x0b+\x0c\xd6U\x00\x0bj\x17Yn\x08\x00E\x00\x000\t\xb1@\x00\x80\x06\x04\x1d{{{\x02{{{\x01\x04 \x00PB\xd3\x03w\x00\x00\x00\x00p\x02\xff\xffKk\x00\x00\x02\x04\x05\xb4\x01\x01\x04\x02'
复制代码
想知道如何才能让他显示的时候类似这样显示:
  1. 00 0b 2b 0c d6 55 00 0b 6a 17 59 6e 08 00 45 00 ..+..U..j.Yn..E.
  2. 00 30 09 b1 40 00 80 06 04 1d 7b 7b 7b 02 7b 7b .0..@.....{{{.{{
  3. 7b 01 04 20 00 50 42 d3 03 77 00 00 00 00 70 02 {.. .PB..w....p.
  4. d3 5d 54 73 00 00 00 00 00 23 ff 53 73 74 75 76 .]Ts.....#.Sstuv
  5. ff ff 4b 6b 00 00 02 04 05 b4 01 01 04 02       ..Kk..........
复制代码
其中左边是原来的十六进制数,右边是对应这一行十六进制数的字符显示,
其中左边的很容易实现,但是右边的其中有些字符显示了,有些字符用..代替了,这是怎么实现的啊

论坛徽章:
0
2 [报告]
发表于 2010-03-06 08:02 |只看该作者
回复 1# xiaoquwl
  1. hex=['00','0b','2b']
  2. for h in hex:
  3.     i=int(h,16)
  4.     if (i >=32 and i<=126):
  5.         print  chr(i)
  6.     else:
  7.         print '.'
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-03-06 09:07 |只看该作者
谢谢,能解释下if语句里的限制是如何得到的呢?

论坛徽章:
0
4 [报告]
发表于 2010-03-06 09:13 |只看该作者
ascii码表   0-31控制字符  32-126键盘可输入字符

论坛徽章:
0
5 [报告]
发表于 2010-03-06 09:15 |只看该作者
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP