2011-09-11 209 views
1

我正在嘗試編寫一個函數,該函數從二進制文件中讀取指定數量的字節並將它們轉換爲1和0的字符串。什麼是最簡單的方法來做到這一點。 文件位於BigEndian。讀取二進制文件並將其轉換爲二進制字符串

string ReadBytesFromFile(int size) 
{ 
    string result; 
    ifstream file ("example.bin", ios::in|ios::binary|ios::ate); 
    if (file.is_open()) 
    {   
     memblock = new char [size]; 
     file.seekg (0, ios::beg); 
     file.read (memblock, size); 
     file.close(); 

     //need to convert memblock to binary string 
     result = GetBinaryString(memblock); 

     delete[] memblock; 

    } 
    return result; 
} 
+0

最簡單的方法可能是使用bitset或itoa。 – 2011-09-11 21:58:44

+0

請記住取消設置skipws標誌。 –

回答

2

每次取一個字節,逐個移位。

喜歡的東西:

std::ostringstream ss; 
for (int i=0; i<size; ++i) { 
    char byte = memblock[i]; 
    for (int j=0; j<8; ++j) { 
    ss << byte & 1; 
    byte = byte << 1;  
    } 
} 
2

呼叫itoa()經過2作爲基數。確保你不會超出你的緩衝區!

注意:這不是任何C或C++標準的一部分,因此要警告它不可移植。但是你要求輕鬆而不是輕便!

+0

好的,什麼是正確的方法? – Naush

+0

不是標準庫的一部分,但我確信它有開放源代碼的實現,如果您希望它是可移植的,可以使用它。 – 2011-09-11 22:01:46

相關問題