Как в C++ прочитать файл в шестнадцатеричном режиме?

Нужно на C++ сделать вот что: открыть файл, как если бы его открыли в шестнадцатеричном редакторе, дойти до строки 00000030, при длине строки 16 символов, и вывести hex-содержимое этой строки на экран. Причём именно в hex, никак не в строковом виде!


Harry, хз, я пробовал так:

#include <fstream>
#include <string>
#include <iostream>
using namespace std;

int main() {
    ifstream myfile;
    myfile.open("file.bin", ios::binary);
    string tmpl;
    while(getline(myfile, tmpl)) {
        cout << hex << tmpl << endl;
    }
    return 0;
}

Ответы (2 шт):

Автор решения: RandomDice 779

Конкретно с чтением в hex разобрался.

ifstream binfile;
binfile.open("file.bin", ios::binary);
char ipc;
while(binfile.get(ipc)) {
    cout << hex << (int)ipc;
}

binfile.get - чтение по байтам. (int)ipc - перевод char в int.

→ Ссылка
Автор решения: Harry

Ну, например, так. Только убедитесь, что файл достаточной длины :)

int main()
{
    ifstream in("data",ios::binary);
    if (!in.is_open()) { cerr << "Error open file\n"; return 1; }
    if (!in.seekg(0x30*16)) { cerr << "Error seek file\n"; return 1; }
    unsigned char buf[16];
    if (!in.read((char*)buf,16)) { cerr << "Error read file\n"; return 1; }
    cout << hex << setfill('0');
    for(int i = 0; i < 16; ++i)
        cout << setw(2) << (unsigned int)buf[i] << ' ';

}
→ Ссылка