Как мне прочитать X файл в оперативную память как число в C ++ в среде Linux? - PullRequest
1 голос
/ 03 июля 2011

Я работаю над программой сжатия, которая должна считывать файл в ОЗУ одним числом, выполнять основные математические операции и сдвиг битов. Я смотрел на gmp из GNU, но он плохо интегрирован в c / c ++. Я понятия не имею, с чего начать читать и помещать значения в переменную mpz_t.

1 Ответ

1 голос
/ 03 июля 2011
#include <fstream>
#include <gmp.h>
#include <gmpxx.h>
#include <iostream>

using namespace std;

mpz_class fileToNumber (const string& fileName)
{
    mpz_class number;
    ifstream file(fileName.c_str());
    while( file.good() ){
        unsigned char c;
        file >> c;
        number <<= 8;
        number += c;
    }
    file.close();
    return number;
}


int main (int argc, char* argv[])
{
    if( argc - 1 < 1 ){
        cout << "Usage: " << argv[0] << " file.txt" << endl;
        return 0;
    }
    cout << hex << fileToNumber(argv[1]) << endl;
}

Редактировать: Исправлено, неправильно понял исходный вопрос, теперь он читает файлы как число вместо числа ASCII.

Редактировать: Переместил весь файл в преобразование mpz_class в красивую функцию.

...