2015-05-18 117 views
2

我在这是base64编码搜索的base64解码文本二进制数据在Python

我与

b64 = base64.b64decode(row[2]) 

很轻松地对其进行解码,但是我现在需要搜索解码数据的数据库的一些数据用于各种文本字符串并获得所述字符串的偏移量。解码后的数据是二进制的,即它包含了大量的非printables的,

我已经试过

ofs = b64.find('content') 

但得到一个错误TypeError: Type str doesn't support the buffer API

这说明我清楚地找错了树空值等。

我是新来的Python,但由于各种原因想尝试使用它的解决方案 - 任何想法请吗?

+0

数据先前是base64编码是什么原因? –

回答

4

搜索一个bytes对象,而不是一个str

ofs = b64.find(b'content') 

或者少一些硬编码的方式

search = 'content' 
ofs = b64.find(bytes(search)) 

如编码为bytes,你应该寻找一个相应物体内部它;)。



从文档,bytes作为功能使用时,返回一个新bytes对象:

字节([源[,编码[,错误]]])

返回一个新的“bytes”对象,它是一个不可变的整数序列,其范围为0 < = x < 256. bytes是bytearray的不可变版本 - 它具有相同的非变异方法s和相同的索引和切片行为。

+1

可爱 - 谢谢 –