Я пытаюсь прочитать массив с плавающей запятой из файла 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.
Как я могу читать правильно и если у меня есть массив с плавающей запятой?