二进制读取主要分为文件操作和位操作两种方式,具体如下:
一、文件操作中的二进制读取
- 使用`open()`函数以二进制模式(`'rb'`)打开文件,读取时返回`bytes`类型数据。例如:
```python
with open('example.bin', 'rb') as file:
data = file.read(10) 读取前10个字节
remaining_data = file.read() 读取剩余部分
```
- 通过`ReadAllBytes`方法可一次性读取整个文件内容为字节数组。
Java实现
- 采用`InputStream`或`FileInputStream`以二进制模式读取文件,避免字符编码问题。例如:
```java
try (FileInputStream fis = new FileInputStream("test4.txt")) {
byte[] data = fis.readAllBytes();
// 处理字节数组
} catch (IOException e) {
e.printStackTrace();
}
```
二、位操作中的二进制读取
按位提取
- 使用位运算符(如`&`、`|`、`^`、`~`)和位移操作(如`<<`、`>>`)提取二进制位。例如:
```python
a = 101010 二进制表示
k = 2 提取第3位(从0开始计数)
bit = (a >> k) & 1 结果为0或1
```
- 通过掩码(如`100000`)和位移(如`<<`)组合,实现按位或、取反等操作。例如:
```python
a = 101010 二进制表示
a &= ~(1 << 3) 清除第4位(从0开始计数)
```
三、注意事项
编码问题: 处理文本文件时需注意指定编码(如UTF-8),避免乱码;二进制文件应使用字节流读取。 内存管理