Я получил тестовый файл от робота, мне нужно запрограммировать программу на C++, которую я разрабатываю. Поэтому я хотел использовать этот файл, чтобы узнать, как робот сохраняет координаты точек. Моя программа в настоящее время может вычислять координаты, теперь мне нужно создать код робота.Печать неизвестного формата файла на экран
Поэтому я хотел взглянуть на файл. Но кажется, что файл записывается в двоичном режиме. Поэтому моя первая идея: открыть файл в двоичном режиме и распечатать содержимое на экране. Так что это код, который я использую:
//#include "stdafx.h"
#include <iostream> // std::cout
#include <fstream> // std::ifstream
#include <Windows.h>
int main() {
std::ifstream is ("Test.PRG", std::ifstream::binary);
if (is) {
// get length of file:
is.seekg (0, is.end);
int length = is.tellg();
is.seekg (0, is.beg);
char * buffer = new char [length];
std::cout << "Reading " << length << " characters... ";
// read data as a block:
is.read (buffer,length);
if (is)
std::cout << "all characters read successfully.";
else
std::cout << "error: only " << is.gcount() << " could be read";
is.close();
// ...buffer contains the entire file...
for(int i=0; i<length; i++)
{
std::cout << (double) buffer[i] << std::endl;
}
delete[] buffer;
}
Sleep(10000);
return 0;
}
Но с этим кодом я просто не вижу, что написано в файле. Я также пробовал разные разговоры, чем (двойные). Я использовал char, int и float. Теперь я просто не знаю, что я мог бы сделать больше. Есть ли способ, чтобы прочитать этот файл и преобразовать его в ASCII? Я также добавляю ссылку для файла здесь, так что вы можете посмотреть на нее. Download link for file
Используйте текстовый редактор, который позволяет просматривать двоичные файлы, такие как ультра Edit. –
Двоичный файл содержит * bytes * или * октеты *. Значения находятся в диапазоне 0 .. 255. Печатный набор символов ASCII намного меньше. Таким образом, существует много значений * непечатаемых * (если вы выберете их как символы). Вам нужно будет прочитать значения как 'uint8_t' и распечатать их как целые числа. Обычно выполняется в шестнадцатеричном формате. –
В системах * nix и Cygwin (для Windows) есть утилита 'od' (восьмеричный дамп), которая может печатать содержимое файла в восьмеричном и десятичном значении. Изучите это. Вы даже можете получить исходный код для него. –