Python趣味题--求bytes的压缩显示

admin 2023年3月31日19:15:42评论21 views字数 2416阅读8分3秒阅读模式
https://scz.617.cn/python/202303311632.txt

出个Python小题,有兴趣的可以做一下,没啥技术难度,但坑点不少,心得比较细。

import hexdump
tmp=b'PK34'+b''*26+b'+(xcaxcc+xd1Pxf7Hxcd'+b'xc9'*2+b'Wbxcf/xcaIQTxd74PK12'+b''*6+b'1'+b''*9+b'x17'+b''*7+b'v'+b''*17+b'_'*2+b'main'+b'_'*2+b'.pyPK56'+b''*8+b'9'+b''*3+b'5'+b''*3
hexdump.hexdump(tmp)

0000000050 4B 03 04 00 00 00 00  00 00 00 00 00 00 00 00  PK..............
0000001000 00 00 00 00 00 00 00  00 00 00 00 00 00 2B 28  ..............+(
00000020: CA CC 2B D1 50 F7 48 CD  C9 C9 57 08 CF 2F CA 49  ..+.P.H...W../.I
0000003051 54 D7 04 00 50 4B 01  02 00 00 00 00 00 00 01  QT...PK.........
0000004000 00 00 00 00 00 00 00  00 17 00 00 00 00 00 00  ................
0000005000 0B 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0000006000 00 00 5F 5F 6D 61 69  6E 5F 5F 2E 70 79 50 4B  ...__main__.pyPK
0000007005 06 00 00 00 00 00 00  00 00 39 00 00 00 35 00  ..........9...5.
0000008000 00                                             ..

tmp数据如上,print(repr(tmp))看到的内容太占地方,请实现一个repr_ex(),使得print(repr_ex(tmp))看到的显示同tmp变量表达式。

>>> print(repr(tmp))
b'PKx03x04x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00+(xcaxcc+xd1Pxf7Hxcdxc9xc9Wx08xcf/xcaIQTxd7x04x00PKx01x02x00x00x00x00x00x00x01x00x00x00x00x00x00x00x00x00x17x00x00x00x00x00x00x00x0bx00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00__main__.pyPKx05x06x00x00x00x00x00x00x00x009x00x00x005x00x00x00'

>>> print(repr_ex(tmp))
b'PK34'+b''*26+b'+(xcaxcc+xd1Pxf7Hxcd'+b'xc9'*2+b'Wbxcf/xcaIQTxd74PK12'+b''*6+b'1'+b''*9+b'x17'+b''*7+b'v'+b''*17+b'_'*2+b'main'+b'_'*2+b'.pyPK56'+b''*8+b'9'+b''*3+b'5'+b''*3

>>> hexdump.hexdump(eval(repr_ex(tmp)))
0000000050 403 04 00 00 00 00  00 00 00 00 00 00 00 00  PK..............
0000001000 00 00 00 00 00 00 00  00 00 00 00 00 00 228  ..............+(
00000020: CA CC 2B D1 50 F7 48 CD  C9 C9 57 08 CF 2F CA 49  ..+.P.H...W../.I
0000003051 54 D7 04 00 50 401  02 00 00 00 00 00 00 01  QT...PK.........
0000004000 00 00 00 00 00 00 00  00 17 00 00 00 00 00 00  ................
0000005000 0B 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0000006000 00 00 55661 69  655270 79 50 4B  ...__main__.pyPK
0000007005 06 00 00 00 00 00 00  00 00 39 00 00 00 35 00  ..........9...5.
0000008000 00                                             ..

之前懒得自实现repr_ex(),想让ChatGPT帮写一个,未如愿。或许谁运气好,能让ChatGPT实现此需求,自实现亦可。

原文始发于微信公众号(青衣十三楼飞花堂):Python趣味题--求bytes的压缩显示

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月31日19:15:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Python趣味题--求bytes的压缩显示http://cn-sec.com/archives/1642878.html

发表评论

匿名网友 填写信息