2
我有一個矢量< bool>二進制數據,我需要寫入一個二進制文件一點一點地(我知道它必須是字節的倍數爲8,只是假設它是) 。然後我需要將這些數據重新讀入矢量< bool>中。我很難讓這個工作。從文件中收集位數據
數據必須在矢量< bool>中開始和結束。如果任何人都可以建議簡單的語法來實現這一點,這將是一個巨大的幫助。
我有一個矢量< bool>二進制數據,我需要寫入一個二進制文件一點一點地(我知道它必須是字節的倍數爲8,只是假設它是) 。然後我需要將這些數據重新讀入矢量< bool>中。我很難讓這個工作。從文件中收集位數據
數據必須在矢量< bool>中開始和結束。如果任何人都可以建議簡單的語法來實現這一點,這將是一個巨大的幫助。
最簡單的方法是使用std::bitset。它有一個可用於完成轉換的構造函數和to_ulong成員。然後你只需要將一個大小爲8的矢量轉換爲bitset,反之亦然。當心位存儲在您的載體,如果它適用於您的文件中的字節序的順序...
我在好日子來的,這裏是一些「僞」代碼:
// you will guess declarations
// you might have to reverse bit order dependaing of how you store bits
for(int i = 0; i < 8; ++i)
{
if(myvector[i]) mybistset.set(i);
}
char toWriteInFile = bitset.to_ulong();
// write in file
[...]
char readFromFile;
// read from file
std::bitset mybitset(readFromFile);
// same remarks
for(int i = 0; i < 8; ++i)
{
myvector[i] = mybistset[i];
}
當然,你必須管理的矢量大小比8的部分更大;)
MY2C
但是你這個昨天已經要求在http://stackoverflow.com/questions/4861898/outputting-bit-data-對二進制文件-C。 – TonyK 2011-02-02 14:38:28
是的,我基本上想要複製整個矢量< bool>數據到一個文件,然後重新收集它(它包含一個huffman編碼數據)。我設法讓昨天的小代碼遵循以下http://courses.cs.vt.edu/~cs2604/fall02/binio.html中給出的關於「閱讀和寫作複雜數據」的內容。在主程序中不起作用,給我錯誤。你可以看到我的其他職位。 – 2011-02-02 14:50:37