Как в 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] << ' ';
}