⽤python画派⼤星_派⼤星的烦恼MISC
python新手代码错了应该怎么改
挺有意思的杂项,python将⼆进制转图⽚的时候出现的图⽚不像⼆维码,想看题解的时候发现⽹上的⼤部分题解都是直接转发,更有意思
了。
题⽬是派⼤星的烦恼,给了我们⼀张粉红图⽚,放进010editor⾥⾯
可以看到这⾥就是题⽬⾥⾯所说的派⼤星的伤疤了。
题⽬⾥⾯的描述,说0X44和0X22是伤疤的两种细胞,另外的就是派⼤星的赘⾁。很⾃然地我们可以想到这个是⼆进制对应的01
这⾥是d":"DD"DD""""D"DD""""""DD"""DD"DD""D""DDD""D"D"DD""""""DD""D""""DD"D"D"DD""""D"DD""D"""DD"""""DDD""""D"DD"""D"""DD"""D""DD
我们将"为0 D为1,替换得到:0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000
刚好是16X16
猜测是⼀个⿊⽩⼆维码
⽤python画⼀下:
from PIL import Image
x = 16
y = 16
im = w(‘RGB‘, (x, y))
white = (255, 255, 255)
black = (0, 0, 0)
with open(‘‘) as f:
for i in range(x):
ff = f.readline()
for j in range(y):
if ff[j] == ‘1‘:
im.putpixel((i, j), black)
else:
im.putpixel((i, j), white)
im.save("1.jpg")
得到的是什么玩意⼉
先不说这个能不能反⾊变成⼆维码,就这个画质我估计想扫出来就够呛
于是换⼀个思路
刚好想到了反⾊,于是我们从⼆进制数⼊⼿,看能否反转,因为正向将⼆进制转字符串有不可见字符,我们尝试反着来。
反转之后看能否得到字符串
注意这⾥我反转相当于是将⼆进制数的排序变为了从后往前排
答案错误。
继续测试,从头开始将每⼋位⼆进制数倒序,得到字符串,成功
附上python2代码
(希望转发⼤佬题解的童鞋是在⾃⼰对题⽬有思考之后才转发的,⽽不是简单地看⼀遍题解,感觉⾃⼰懂了,这样不会有什么太⼤的进步,同时也指指⾃⼰)
def bin_to_str(s):
return ‘‘.join([chr(i) for i in [int(b, 2) for b in s.split(‘ ‘)]])
a = "01101100 00101100 00001100 01101100 10011100 10101100 00001100 10000110 10101100 0
0101100 10001100 00011100 00101100 01000110 00100110 10101100 01100110 10100110 01101100 01000110 01101100 10100110 10101100 01000110 00101100 11000110 10100110 00101100 11001100 00011100 11001100 01001100"
a = a.split(‘ ‘)
flag=‘‘
for i in a:
test=i[::-1]
flag+=bin_to_str(test)
print flag

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。