|
处理文本数据比较晦涩难懂(新旧格式化、正则表达式等),而处理二进制数据就有趣多了。你需要了解像字节序(endianness,电脑处理器是如何将数据组织存储为字节的)以及整数的符号位(sign bit)之类的概念。你可能需要研究二进制文件格式、网络包等内容,从而对其中的数据进行提取甚至修改。本节将了解到 Python 中有关二进制数据的一些基本操作。
Python 3 引入了下面两种使用 8 比特序列存储小整数的方式,每 8 比特可以存储从 0~255的值:
• 字节是不可变的,像字节数据组成的元组;
• 字节数组是可变的,像字节数据组成的列表。
我们的示例从创建列表 blist 开始。接着需使用这个列表创建一个 bytes 类型的变量 the_bytes 以及一个 bytearray 类型的变量 the_byte_array:- blist = [1, 2, 3, 254,255]
- the_bytes=bytes(blist)
- the_byte_array = bytearray(blist)
- print(the_bytes)
- print(the_byte_array)
复制代码 输出:- b'\x01\x02\x03\xfe\xff'
- bytearray(b'\x01\x02\x03\xfe\xff')
复制代码 下面两行代码都会创建一个包含 256 个元素的结果,包含 0~255 的所有值:
>>> the_bytes = bytes(range(0, 256))
>>> the_byte_array = bytearray(range(0, 256))
打印 bytes 或 bytearray 数据时, Python 会以 \xxx 的形式表示不可打印的字符, 以 ASCII字符的形式表示可打印的字符(以及一些转义字符,例如 \n 而不是 \x0a)。下面是 the_bytes 的打印结果(手动设置为一行显示 16 个字节):
看起来可能有些困惑,毕竟上面输出的数据是字节(小整数)而不是字符。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|