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)
00000000: 50 4B 03 04 00 00 00 00 00 00 00 00 00 00 00 00 PK..............
00000010: 00 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
00000030: 51 54 D7 04 00 50 4B 01 02 00 00 00 00 00 00 01 QT...PK.........
00000040: 00 00 00 00 00 00 00 00 00 17 00 00 00 00 00 00 ................
00000050: 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000060: 00 00 00 5F 5F 6D 61 69 6E 5F 5F 2E 70 79 50 4B ...__main__.pyPK
00000070: 05 06 00 00 00 00 00 00 00 00 39 00 00 00 35 00 ..........9...5.
00000080: 00 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)))
00000000: 50 4B 03 04 00 00 00 00 00 00 00 00 00 00 00 00 PK..............
00000010: 00 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
00000030: 51 54 D7 04 00 50 4B 01 02 00 00 00 00 00 00 01 QT...PK.........
00000040: 00 00 00 00 00 00 00 00 00 17 00 00 00 00 00 00 ................
00000050: 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000060: 00 00 00 5F 5F 6D 61 69 6E 5F 5F 2E 70 79 50 4B ...__main__.pyPK
00000070: 05 06 00 00 00 00 00 00 00 00 39 00 00 00 35 00 ..........9...5.
00000080: 00 00 ..
之前懒得自实现repr_ex(),想让ChatGPT帮写一个,未如愿。或许谁运气好,能让ChatGPT实现此需求,自实现亦可。
原文始发于微信公众号(青衣十三楼飞花堂):Python趣味题--求bytes的压缩显示
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论