编辑“︁
取证隐写前置技术
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== struct 模块 === 有的时候需要用 Python 处理二进制数据,比如,存取文件,socket 操作时。这时候,可以使用 Python 的 struct 模块来完成。 struct 模块中最重要的三个函数是 <code>pack()</code>、<code>unpack()</code> 和 <code>calcsize()</code> * <code>pack(fmt, v1, v2, ...)</code> 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流) * <code>unpack(fmt, string)</code> 按照给定的格式(fmt)解析字节流 string,返回解析出来的 tuple * <code>calcsize(fmt)</code> 计算给定的格式(fmt)占用多少字节的内存 这里打包格式 <code>fmt</code> 确定了将变量按照什么方式打包成字节流,其包含了一系列的格式字符串。这里就不再给出不同格式字符串的含义了,详细细节可以参照 [https://docs.python.org/2/library/struct.html Python Doc] <syntaxhighlight lang="python">>>> import struct >>> struct.pack('>I',16) '\x00\x00\x00\x10'</syntaxhighlight> <code>pack</code> 的第一个参数是处理指令,<code>'>I'</code> 的意思是:<code>></code> 表示字节顺序是 Big-Endian,也就是网络序,<code>I</code> 表示 4 字节无符号整数。 后面的参数个数要和处理指令一致。 读入一个 BMP 文件的前 30 字节,文件头的结构按顺序如下 * 两个字节:<code>BM</code> 表示 Windows 位图,<code>BA</code> 表示 OS/2 位图 * 一个 4 字节整数:表示位图大小 * 一个 4 字节整数:保留位,始终为 0 * 一个 4 字节整数:实际图像的偏移量 * 一个 4 字节整数:Header 的字节数 * 一个 4 字节整数:图像宽度 * 一个 4 字节整数:图像高度 * 一个 2 字节整数:始终为 1 * 一个 2 字节整数:颜色数 <syntaxhighlight lang="python">>>> import struct >>> bmp = '\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00' >>> struct.unpack('<ccIIIIIIHH',bmp) ('B', 'M', 691256, 0, 54, 40, 640, 360, 1, 24)</syntaxhighlight> <span id="bytearray-字节数组"></span>
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息