2012-07-24 128 views
0

我對C++中的二進制數有個普遍的疑問。我正在讀取32位數字的二進制文件,然後將這些數字寫入文本文件。我的問題是,當我做C++如何解釋二進制數

long int temp; 
temp = (fileBuf[N * 4 * i + 4 * j + 0] << 24 | 
     fileBuf[N * 4 * i + 4 * j + 1] << 16 | 
     fileBuf[N * 4 * i + 4 * j + 2] << 8 | 
     fileBuf[N * 4 * i + 4 * j + 3] << 0 ); 
myfile1 << temp << "\t"; 

C++知道我希望它重新解釋二進制爲十進制數?

+0

C++不知道二進制或十進制數字,除非從輸入流中讀取或寫入輸出流('iostream')。 – 2012-07-24 20:36:07

+0

什麼是fileBuf的類型? – tumdum 2012-07-24 20:38:05

+0

fileBuf讀入單個字節,輸入BYTE。 – bigbenbt 2012-07-24 20:46:19

回答

1

如果我把這個問題解釋爲「這會做我想做的事嗎?」那麼答案是,只要你想要它做的是從緩衝區讀取一個32位大端整數(可能是從一個文件加載)在偏移量4 * N * i + 4 * j

當然假設fileBuf被聲明爲字符或無符號字符類型。例如,如果它是一組短褲,它的表現會有所不同。你最終會得到一個64位數量的殘缺表示。

+0

就是這樣。謝謝。 – bigbenbt 2012-07-24 20:46:47

0

不。實際上,只有在最後一行打印出來,該數字纔會轉換爲小數。

1

全部變量內部的一個C++ int變量是二元的。當數字被讀取或寫入時,或者編譯器將其從常量轉換爲代碼時,轉換爲十進制或從十進制轉換。