簡體   English   中英

c ++如何解釋二進制數

[英]How does c++ interpret a binary number

我對c ++中的二進制數有一個普遍的疑問。 我正在讀取32位數字的二進制文件,然后將這些數字寫入文本文件。 我的問題是,當我這樣做的時候

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 ++是否理解我希望它將二進制文件重新解釋為十進制數?

C ++ int變量中的所有數字都是二進制的。 在讀取或寫入數字時,或者編譯器將其從常量轉換為代碼時,會發生到十進制或從十進制的轉換。

如果我將這個問題解釋為“這會做我想要的嗎?” 然后答案是肯定的 ,只要您想要它做的是從偏移量為4 * N * i + 4 * j的緩沖區(可能是從文件加載)中讀取32位大端序列。

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

實際上,在最后一行打印之前,該數字不會轉換為十進制數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM