C++ 打印每次读取文件数据的最后五个包,以4个字节的形式打印
时间: 2024-03-20 12:38:34 浏览: 109
您可以参考下面的代码:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ifstream in("data.bin", ios::binary); // 打开二进制文件
if (!in) {
cerr << "Failed to open file." << endl;
return -1;
}
const int packet_size = 4; // 每个包的大小
const int packet_num = 5; // 每次读取的包的数量
vector<char> buffer(packet_size * packet_num); // 缓冲区
while (in) {
in.read(buffer.data(), buffer.size()); // 读取数据
int read_size = in.gcount(); // 实际读取的字节数
if (read_size == 0) {
break;
}
// 打印最后五个包
int last_packet_index = (read_size / packet_size) - 1;
int start_index = max(0, last_packet_index - packet_num + 1);
for (int i = start_index; i <= last_packet_index; i++) {
cout << "Packet " << i << ": ";
for (int j = 0; j < packet_size; j++) {
cout << hex << static_cast<int>(buffer[i * packet_size + j]) << " ";
}
cout << endl;
}
}
in.close(); // 关闭文件
return 0;
}
```
上面的代码使用了 STL 的 vector 和 algorithm 库,可以更方便地操作数据。在读取数据时,使用了 ifstream 的 read 函数,可以一次读取多个字节。在打印数据时,使用了 max 函数来确定起始包的索引,然后使用双重循环来打印每个包的数据。注意要使用 hex 格式来打印每个字节的值。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)