2016-03-03 6 views
0

Я получил тестовый файл от робота, мне нужно запрограммировать программу на 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

+0

Используйте текстовый редактор, который позволяет просматривать двоичные файлы, такие как ультра Edit. –

+1

Двоичный файл содержит * bytes * или * октеты *. Значения находятся в диапазоне 0 .. 255. Печатный набор символов ASCII намного меньше. Таким образом, существует много значений * непечатаемых * (если вы выберете их как символы). Вам нужно будет прочитать значения как 'uint8_t' и распечатать их как целые числа. Обычно выполняется в шестнадцатеричном формате. –

+0

В системах * nix и Cygwin (для Windows) есть утилита 'od' (восьмеричный дамп), которая может печатать содержимое файла в восьмеричном и десятичном значении. Изучите это. Вы даже можете получить исходный код для него. –

ответ

1

Вот картина начала файла, который я взял с HexFiend: enter image description here

+0

Я получил то же самое UltraEdit. Но все ли сохранено в этом файле? В этом файле должно быть больше информации, например, координат. – user3794592

+0

Я уверен, что в файле есть координаты. Я только напечатал начало. Но вам, вероятно, понадобится спецификация формата файла для файлов PRG, прежде чем вы сможете вырвать координаты из двоичного файла, подобного этому. – Logicrat

+0

Я просмотрел весь файл, и единственное, что я увидел, это «WRKCoo» и число. Но я знаю, что это команда перемещения для робота. Проблема в том, что я не получу спецификацию для компании PRG, предоставляющей этот робот. Таким образом, единственный способ программирования робота - понять этот файл. – user3794592

Смежные вопросы