Прочитать 4 байта с плавающей точкой матрицы файле и вывести его в качестве .КШМ
У меня есть двоичный файл, который имеет матрицу 3601*3601, хранящуюся в виде 2-байтовых целых чисел, я нашел код (опубликованный ниже), который преобразует его в читаемый текстовый файл, такой как .csv
Мой вопрос: теперь у меня есть матрица 3601*3601, хранящаяся в двоичном файле 4 байта с плавающей запятой, как отредактировать мой код, чтобы прочитать этот файл, а затем вывести его в виде десятичной дроби, хранящейся в читаемом текстовом файле типа .csv, как указано выше?
Вот рабочий код для 2 байт целое двоичное:
Что я уже пробовал:
#include <iostream> #include <fstream> using namespace std; const int SRTM_SIZE = 3601; static int height[SRTM_SIZE][SRTM_SIZE] = {{0},{0}}; int main() { ifstream file("/storage/emulated/0/input.hgt", ios::in | ios::binary); if(!file) { cout << "Error opening file!" << endl; return -1; } unsigned char buffer[2]; for (int i = 0; i < SRTM_SIZE; ++i) { for (int j = 0; j < SRTM_SIZE; ++j) { if(!file.read(reinterpret_cast<char*>(buffer), sizeof(buffer) )) { cout << "Error reading file!" << endl; return -1; } height[i][j] = (buffer[0] << 8) | buffer[1]; } } ofstream meinFile; meinFile.open ("/storage/emulated/0/output.csv"); for(int x = 0; x < SRTM_SIZE; x++) { // from row 1 to row SRTM size for(int y = 0; y < SRTM_SIZE; y++) {// from column 1 to SRTM_Size meinFile << height[x][y] << ","; } meinFile << endl; } meinFile.close(); cout<< "Gratulations!" <<endl; cout<< "Your file has been converted sucessfully" <<endl; return 0; }