0

我有一个关于 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++ 是否理解我希望它将二进制重新解释为十进制数?

4

3 回答 3

1

C++int变量中的所有数字都是二进制的。与十进制之间的转换发生在读取或写入数字时,或者编译器将其从常量转换为代码时。

于 2012-07-24T20:39:37.257 回答
1

如果我将这个问题解释为“这会做我想要的吗?” 那么答案是肯定的,只要您希望它从 offset 处的缓冲区(可能是从文件中加载)中读取一个 32 位大端整数4 * N * i + 4 * j

当然假设 fileBuf 被声明为字符或无符号字符类型。例如,如果它是一组短裤,它的行为会有所不同。你最终会得到一个 64 位数量的残缺表示。

于 2012-07-24T20:39:45.587 回答
0

不。事实上,直到您在最后一行打印出来,数字才会转换为十进制。

于 2012-07-24T20:39:19.240 回答