Читать из двоичного кода в c ++ - PullRequest
2 голосов
/ 08 мая 2020

Я пытаюсь прочитать массив с плавающей запятой из файла bin на C ++. Но я создал этот bin-файл с помощью java, и мне нужен этот массив с плавающей запятой, читаемый на C ++.

Запись в двоичный файл из java.

public static void main(String args[]){
    String filename = "out.bin";
    try{
        FileOutputStream fileOs = new FileOutputStream(filename);
        ObjectOutputStream os = new ObjectOutputStream(fileOs);
        os.writeFloat((float) 1.257);

    }catch(FileNotFoundException e){
        e.printStackTrace();
    }catch(IOException e){
        e.printStackTrace();
    }

    System.out.println("Write Done");

}

и чтение на C ++

  std::ifstream fileData("out.bin", std::ios::in | std::ios::binary);

  if(!fileData) {
    std::cout << "Cannot open file.\n";       
  }
  float getdata;
  fileData.read((char *) &getdata, sizeof(getdata));
  fileData.close();

  std::cout << "Data: "<< getdata << std::endl; 
  }

Я пишу 1.257, но читаю в C ++ Data: 6.06218e-36.

Как я могу читать правильно и если у меня есть массив с плавающей запятой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...