数字化技能提升教程,数字化时代生存宝典

首页 / 开发 / 后端开发 / Python教程

Python二进制格式

浏览:366
Python教程
Python教程
类型:后端开发

Python 是一门易于学习、功能强大的编程语言,它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python优雅的语法和动态类型以及解释型语言的本质,成为多数平台上写脚本和快速开发应用的理想语言。Python教程是站长百科推出的一种系统化的Python教程资源,Python教程通常包括基础概念、语法规则、常用库的介绍以及实际项目的实践,在这里可以零基础学Python从入门到精通,旨在帮助初学者逐步掌握Python编程语言。

一、二进制数据记录格式

struct 模块提供了 pack() 和 unpack() 函数,用于处理不定长度的二进制记录格式。下面的例子展示了在不使用 zipfile 模块的情况下,如何循环遍历一个 ZIP 文件的所有头信息。Pack 代码 "H" 和 "I" 分别代表两字节和四字节无符号整数。"<" 代表它们是标准尺寸的小端字节序:

import struct
with open('myfile.zip', 'rb') as f:
data = f.read()
start = 0
for i in range(3): # show the first 3 file headers
start += 14
fields = struct.unpack('<IIIHH', data[start:start+16])
crc32, comp_size, uncomp_size, filenamesize, extra_size = fields
start += 16
filename = data[start:start+filenamesize]
start += filenamesize
extra = data[start:start+extra_size]
print(filename, hex(crc32), comp_size, uncomp_size)
start += extra_size + comp_size # skip to the next header

二、二进制位运算

Python内置支持二进制位运算,包括按位与(&)、按位或(|)、异或(^)、取反(~)和左/右移位(<<和>>)等操作。这些操作可以用于对二进制数进行各种计算和转换。

a = 0b1100 & 0b1010 # 按位与
b = 0b1100 | 0b1010 # 按位或
c = 0b1100 ^ 0b1010 # 异或
d = ~0b1100 # 取反
e = 0b1100 << 2 # 左移2位
f = 0b1100 >> 2 # 右移2位

以上代码将a、b、c、d分别赋值为按位与、按位或、异或、取反的结果,e、f分别赋值为左/右移位的结果,输出即为:

a = 0b1000
b = 0b1110
c = 0b0110
d = -13
e = 0b110000
f = 0b000011

三、二进制文件操作

在Python中,可以使用二进制模式打开文件进行读写操作。在二进制模式下,文件的数据将以二进制格式进行读写,而不是文本格式。如:

f = open('test.bin', 'wb') # 以二进制模式写入
f.write(b'\x31\x32\x33') # 写入字节流
f.close()
f = open('test.bin', 'rb') # 以二进制模式读取
data = f.read() # 读取字节流
f.close()
print(data) # 输出b'123'

以上代码演示了如何使用二进制模式读写文件,在写入时以字节流的形式写入,读取时也以字节流的形式读取,输出即为字节流的形式b'123'。

四、二进制转换

在Python中,可以将二进制转换为十进制、十六进制等不同进制数。如:

a = int('1010', 2) # 二进制转十进制
b = hex(0b1010) # 二进制转十六进制
c = bin(0xABCD) # 十六进制转二进制

以上代码将a、b、c分别赋值为二进制转十进制、二进制转十六进制、十六进制转二进制的结果,输出即为:

a = 10
b = '0xa'
c = '0b1010101111001101'
广告合作

广告合作

QQ群号:4114653

QQ群号:4114653

温馨提示:

  1. 本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。
  2. 本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。