我在我的C++類中有這個奇怪的賦值,我必須在二進制文件(132.147)中使用浮點類型編寫一定的數字,然後使用char類型讀取它,最終結果將是每個字節的十進制值(-94,37,4和67)。以字節讀取二進制文件
fstream binFile("blah.bin", ios::binary|ios::in|ios::out);
float a = 132.147;
binFile.write((char*)&a, sizeof(float));
char b[4];
binFile.read((char*)&b, sizeof(b));
cout << (int)b[0] << ' ' << (int)b[1] << ' ' << (int)b[2] << ' ' << (int)b[3] << endl; // -51 -51 -51 -51
cout << b[0] << ' ' << b[1] << ' ' << b[2] << ' ' << b[3]; // = = = =
binFile.close();
return 0;
我明白他們從哪裏得到這4個數字。如果我使用十六進制編輯器編寫文件並讀取它,我會得到4個十六進制數字,一旦轉換爲帶符號的二進制數字,就可以轉換爲它們的小數形式。但是,我完全不知道如何以編程方式在C++中執行此操作。任何線索?
謝謝!
你幾乎在那裏。您關閉了文件,因此您必須重新打開它才能再次閱讀。你也想要讀取4個字節,而不是10(sizeof(b)== 10,因爲你將它設爲10個元素)。請注意,當您編寫一個浮點數時,請使用'sizeof(float)'而不是'sizeof(int)' – Adam