python操作二进制文件

由于工作的原因之前了解了一下python对于二进制的一些基础,但是一是没看懂, 二是又忘了。

 

最近又看了一下,总结出一点东西。

 

pythoh对二进制文件的操作离不开struct模块,该模块有两个基础接口:

pack()打包至二进制

 

help(struct.pack)
Help on built-in function pack in module _struct:

pack(...)
    pack(fmt, v1, v2, ...) -> bytes
    
    Return a bytes object containing the values v1, v2, ... packed according
    to the format string fmt.  See help(struct) for more on format strings.

umpack()从二进制解压

 

 

 help(struct.unpack)
Help on built-in function unpack in module _struct:

unpack(...)
    unpack(fmt, buffer) -> (v1, v2, ...)
    
    Return a tuple containing values unpacked according to the format string
    fmt.  Requires len(buffer) == calcsize(fmt). See help(struct) for more
    on format strings.


两个函数都能接受多个值,但是第一个参数需要与后面的值对应。

 

关于第一个参数fmt,基本同c语言对应,其类型和大小可以参考下表

python操作二进制文件_第1张图片

 

同时fmt可以设定字节序

python操作二进制文件_第2张图片

注:我理解的big-endian和little-endian分别为正序和倒序,以0x12345为例

big-endian:

            地址:             低     --------->     高

                                     1   2    3   4     5

little-endian:

            地址:             低     --------->     高

                                     5     4   3   2   1

 

同时也需要一些其他模块的配合,有人推荐ctypes模块和binascii模块,但是我看到有人使用array模块就可以了。

其中buf的初始化:

 

import array

buf = array.array('h', (0 for _ in range(size)))


buf可以储存字节数据

 

 

 

python操作二进制文件_第3张图片

你可能感兴趣的:(Python)