Получаю текст бинарного файла, с которым мне нужно дальше работать, но для этого мне нужно перевести его в utf-8.
Вот что получаю.
$y„‘р{Ы©ё¤LR5cЧzМїyх<]Aґ›ЌI:\д:ЮТ«уг€сa=-‚ЬьEo"жвпйЅз‡µ^†
7hпw(%аoWм¶\($¬ѕн™…<„м±яlЮФЎ‹Жж
rоЬ:пеNМпчШЅЃ6Еv8уoФj¦¬ТИмб`%ї·}•т+‡CэЪG¤Ч;fЈИXxш¶BЭц є›ЪКГ
Есть ли способ перевести эту сторку в нормальный формат, ну, или прочитать ее побитово, чтобы вручную все сделать?
Пытался прочитать побитово, но вот оригинальный файл весит 500 байт, а когда перевел, то получил 250 байт. В с++ еще очень
зеленый прошу сильно не ругать. Уже второй день сижу тут туплю, буду рад всем советам.
Читаю таким способом:
std::ifstream f(this->file_path, ios::binary);
f.seekg(0, std::ios::end);
size_t size = f.tellg();
std::string s(size, ' ');
f.seekg(0);
f.read(&s[0], size);
return s;
Тут пытался побайтовов вывести:
std::ifstream in(filename.c_str(), ios::in | ifstream::binary);
char tmp;
if (in) {
size_t count = 0;
while (!in.eof()) {
in.read(&tmp, 1);
std::cout << std::hex << std::setfill('0') << std::setw(2)
<< static_cast<unsigned int>(static_cast<unsigned char>(tmp));
++count;
if (count % 4 == 0)
std::cout << ' ';
if ((count % 20) == 0)
std::cout << std::endl;
if (count >= 120)
break;
}
in.close();
}
else {
std::cerr << "Oops: cant open file" << std::endl;
}