读取文件指定某段的字节

  • 读取文件指定某段的字节
#include <iostream>
#include <fstream>
#include <iomanip>

void readBytesFromFile(const std::string& filename, size_t startByte, size_t numBytes) 
{
    std::ifstream file(filename, std::ios::binary);

    if (!file.is_open()) 
    {
        std::cerr << "Error: Unable to open the file." << std::endl;
        return;
    }

    // 动态分配内存
    uint8_t* buffer = new uint8_t[numBytes];

    // 移动到目标开始位置
    file.seekg(startByte, std::ios_base::beg);

    // 读取指定字节数
    file.read(reinterpret_cast<char*>(buffer), numBytes);

    // 以下是以16进制的形式打印查看一下--------------------
    size_t count = 0;
    for (size_t i = 0; i < numBytes && file.good(); ++i) 
    {
        std::cout << std::uppercase << std::setfill('0') << std::setw(2) << std::hex << static_cast<int>(buffer[i]) << ' ';
        ++count;

        // 每隔10个字节换行
        if ((i % 10 == 0)) {
            std::cout << std::endl;
        }
    }
    // 打印完毕---------------------------------

    // 释放动态分配的内存
    delete[] buffer;
    file.close();
}
int main() {
    std::string filename = "D:/code/test.bin"; // 替换为你要读取的文件名
    size_t startByte = 0; // 开始字节位置
    size_t numBytes = 3500; // 要读取的字节数

    readBytesFromFile(filename, startByte, numBytes);

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值