文档章节

Python Challenge Level 18

A
 Adam-Wang
发布于 2014/05/30 17:30
字数 245
阅读 46
收藏 0
点赞 0
评论 0

初学Python,挑战一下流行的Python Challenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~

主要的问题就是16进制形式的字符如何转成字节码 (注意:不是encoding)

如:['89', '50', '4e', '47', '0d', '0a', '1a', '0a', '00', '00', '00', '0d', '49', '48', '44', '52', '00', '00']

       直接转换成

       b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00' 的形式。

如果使用encode('utf-8'), '\x89'之类的会被转成'\xc2\x89', 不是想要的。

So,直接看代码吧...

'''
Created on May 27, 2014

@author: adam.wang
'''
import difflib
 
file=open(r'./file/deltas/delta.txt')
data=file.readlines()
 
matrix1=[]
matrix2=[]
  
for s in data:
    s=s.replace('\n','')
    matrix1.append(s[0:53])
    matrix2.append(s[56:])
     
diff=list(difflib.ndiff(matrix1, matrix2))

add_data=b''
minus_data=b''
space_data=b''
   
for temp in diff: 
    s=temp[0:1]
    t=b''
    for b in temp[2:].split(): 
        t+=bytes.fromhex(b)
    if s=='+':
        add_data+=t
    elif s=='-':
        minus_data+=t
    else:
        space_data+=t

open('./level18/add.png','wb').write(add_data)
open('./level18/minus.png','wb').write(minus_data)
open('./level18/space.png','wb').write(space_data)


© 著作权归作者所有

共有 人打赏支持
A
粉丝 0
博文 3
码字总数 671
作品 0
南京
【原创】Python 之快速性能优化(第二部分)

本文为翻译,原文地址:《Quick Python Performance Optimization: Part II》 This is the Part II of Quick Python Performance Optimizations. 本文是 Python 性能优化二两发的第二部分。 ......

摩云飞
2013/11/19
0
0
Install Eclipse 3.7 Indigo and configure Eclipse

Overview 1.1 What is Eclipse? Eclipse is a platform that has been designed from the ground up for building integrated web and application development tooling. By design, the pla......

MyPy
2014/04/22
0
2
5分钟教你学会Django系统错误监控

一、监控所有的request请求 如何实现系统监控,自动发送错误日志的邮件呢? 只需配置配置settings文件即可。 1.设置发送邮件配置信息 邮件会发送到ADMINS设定的邮件列表中。 2.配置LOGGING 1...

p柯西
06/20
0
0
Python的并发编程工具包 Pykka

Pykka 项目的目的是为 Python 提供了易用的并发操作抽象层,使用 Actor 模式。 Pykka 提供了 Actor API ,包含两种不同的实现: ThreadingActor is built on the Python Standard Library’s...

openthings
2015/01/26
0
0
banana pi gpio testing

安装GPIO库 (1)更新源: $ sudo apt-get update (2)安装python: $ sudo apt-get install python-dev (3)安装python-pip( python-pip是一个可以替代easy_install的安装和管python软件...

sinovoip
2014/05/16
0
0
获取Python多线程的返回值

用python多线程时,遇到需要获取每个线程返回值的问题,经查资料学习总结如下: Python中使用线程有两种方式:用方法包装线程和用类包装线程 1、用方法包装线程: thread.startnew_thread (...

u012050154
04/21
0
0
在UbuntuKylin15.04上安装GIScript2015

GIScript入门教程参见:http://my.oschina.net/u/2306127/blog/484213,这里介绍基于SIP的C++封装为Python的方法和使用过程。 GIScript2015版采用了新的SIP封装,从而可以更好地与C++接口保持...

openthings
2015/06/24
0
0
Centos下安装Python3.6

一、安装python3.6.1 1、安装依赖环境 #yum install readline-devel ##必须安装否则会出现python3编译器中不能使用退格键和方向键 2、下载安装包并解压 [root@bogon ~]# wget https://www.p...

argen2020
06/26
0
0
Python日志(logging)模块使用方法简介

介绍 A logger is configured to have a log level. This log level describes the severity of the messages that the logger will handle. Python defines the following log levels: Each......

AltBoy
06/26
0
0
用Python来扩展Postgresql(二)

今天遇到一个问题,需要在Postgresql里面写做一个trigger,是在insert的时候,如果这条数据的某个字段满足一定条件,就修改数据或者做相应的处理。在pg里面写触发器,分为两个步骤。第一,需...

CLLam
2013/06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MyBatis源码解读之延迟加载

1. 目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延...

无忌
5分钟前
0
0
javascript 类变量的实现

代码如下: function echo(){ for(let i=0;i<arguments.length;i++) console.log(arguments[i]);}function extend(o, p){for (prop in p) {o[prop] = p[prop]}retur......

backbye
9分钟前
0
2
编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
17分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
29分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
30分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
46分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
48分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
58分钟前
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
今天
0
0
Artificial Intelligence Yourself

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流...

孟飞阳
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部