Использование побитовых операторов в C ++ для преобразования 4 символов в int

Что я должен сделать, так это открыть файл в двоичном режиме, содержащий сохраненные данные, которые предназначены для интерпретации как целые числа. Я видел и другие примеры, такие как Stackoverflow-чтение байтов «целого» размера из массива char *. но я хочу попробовать другой подход (я могу быть упрямым или глупым: /). Сначала я создал простой двоичный файл в шестнадцатеричном редакторе, который читается следующим образом.

00 00 00 47 00 00 00 17 00 00 00 41
Это (должно) равняться 71, 23 и 65, если 12 байтов были разделены на 3 целых числа.

После открытия этого файла в двоичном режиме и чтение 4 байтов в массив символов, как я могу использовать побитовые операции, чтобы биты char [0] были первыми 8 битами int, и так далее, пока биты каждого char не станут частью int.

 
My integer = 00        00        00        00  
 +           ^         ^         ^         ^
Chars      Char[0]  Char[1]   Char[2]   Char[3]
             00        00        00        47


So my integer(hex) = 00 00 00 47 = numerical value of 71

Кроме того, я не знаю, как здесь влияет порядок байтов в моей системе, поэтому есть ли что-нибудь, что мне нужно иметь в виду?

Вот фрагмент кода того, что у меня есть, я просто дон' не знаю, что делать дальше.


std::fstream myfile;
    myfile.open("C:\\Users\\Jacob\\Desktop\\hextest.txt", std::ios::in | std::ios::out | std::ios::binary);
    if(myfile.is_open() == false)
    {
        std::cout << "Error" << std::endl;
    }
    char* mychar;
    std::cout << myfile.is_open() << std::endl;
    mychar = new char[4];
    myfile.read(mychar, 4);

В конечном итоге я планирую иметь дело с чтением чисел с плавающей запятой из файла и, возможно, в конечном итоге с пользовательским типом данных, но сначала мне просто нужно больше познакомиться с использованием побитовых операций. Спасибо.

5
задан Community 23 May 2017 в 12:09
поделиться