background image
一个 4 字节整数:保留位,始终为 0;
一个 4 字节整数:实际图像的偏移量;
一个 4 字节整数:Header 的字节数;
一个 4 字节整数:图像宽度;
一个 4 字节整数:图像高度;
一个 2 字节整数:始终为 1;
一个 2 字节整数:颜色数。
通过分析位图文件的文件头结构,可以检查任意文件是否是位图文件
>>> struct.unpack('<ccIIIIIIHH', s)
(b'B', b'M', 691256, 0, 54, 40, 640, 360, 1, 24)
5、hashlib:提供常见的摘要算法,MD5,SHA1,SHA256,SHA512 等
摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一
个长度固定的数据串(通常用 16 进制的字符串表示)。
目的是为了发现原始数据
是否被人篡改过 。摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是
一个单向函数,计算
f(data)
很容易,但通过
digest
反推
data
却非常困难。而且,
对原始数据做一个 bit 的修改,都会导致计算出的摘要完全不同。
也可以看成加密
算法。
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in '.encode('utf-8'))
md5.update('python hashlib?'.encode('utf-8'))
print(md5.hexdigest())
注意:在 pycharm 上测试运行时,新建的.py 文件名称不要取 hashlib,因为代码
中需要 import hashlib,如果文件名也是 hashlib 就会引入当前文件(模块),从
导致出现错误。
6、itertools: 提供用于操作迭代对象的函数
count()
会创建一个无限的迭代器,count(1)从 1 开始的迭代器
for
n
in
itertools.count(
1
):
print
(n)
if
n==
10
:
break
cycle()
会把传入的一个序列无限重复下去