提问者:小点点

C++std::hex是否反转字节顺序? (将十进制打印为十六进制)


我在理解以下C++代码时遇到了一些困难:

std::cout << std::hex << 61183 << std::endl; // prints eeff

我正在一台小端计算机(Intel x86-64)上工作,我想在位和字节级别上了解结果是如何产生的,因此我为最低有效位体系结构编写了下表。

正如您所看到的,我希望代码行的输出是ffee,而不是eeff。 所以我在做那张桌子的时候肯定漏掉了什么东西,但我真的看不出来是什么。 std::hex是否受计算机的顺序影响?


共2个答案

匿名用户

Endianness是关于如何在字节寻址存储器中存储数字的。

另一方面,std::hex生成十六进制文本。

0x1000*14+0x100*14+0x10*15+0x1*15==61183,因此61183eeff的十六进制格式。

这不会受到Endianness的影响。

匿名用户

61183的十六进制格式为eeff

Endianness与如何将一些数值存储在内存中有关,而不是如何定义从一个基数到另一个基数的转换。 因此,std::hex的输出不取决于顺序,尽管它可能是内部计算中的一个因素。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(c++std|hex|反转|字节|顺序|十进制|打印|十六进制)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?