Что я должен сделать, так это открыть файл в двоичном режиме, содержащий сохраненные данные, которые предназначены для интерпретации как целые числа. Я видел и другие примеры, такие как 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);
В конечном итоге я планирую иметь дело с чтением чисел с плавающей запятой из файла и, возможно, в конечном итоге с пользовательским типом данных, но сначала мне просто нужно больше познакомиться с использованием побитовых операций. Спасибо.