我在理解以下C++代码时遇到了一些困难:
std::cout << std::hex << 61183 << std::endl; // prints eeff
我正在一台小端计算机(Intel x86-64)上工作,我想在位和字节级别上了解结果是如何产生的,因此我为最低有效位体系结构编写了下表。
正如您所看到的,我希望代码行的输出是ffee
,而不是eeff
。 所以我在做那张桌子的时候肯定漏掉了什么东西,但我真的看不出来是什么。 std::hex
是否受计算机的顺序影响?
Endianness是关于如何在字节寻址存储器中存储数字的。
另一方面,std::hex
生成十六进制文本。
0x1000*14+0x100*14+0x10*15+0x1*15==61183
,因此61183
是eeff
的十六进制格式。
这不会受到Endianness的影响。
61183
的十六进制格式为eeff
。
Endianness与如何将一些数值存储在内存中有关,而不是如何定义从一个基数到另一个基数的转换。 因此,std::hex
的输出不取决于顺序,尽管它可能是内部计算中的一个因素。