[英]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.