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

Does C++ std::hex reverse bytes order? (printing decimal as hexadecimal)

我在理解以下 C++ 代码时遇到一些问题:

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

我在一台小端机器(Intel x86-64)上工作,我想在位和字节级别上了解结果是如何产生的,所以我写了以下内容 table对于最低有效位架构。

如您所见,我预计代码行的输出是 FFEE 而不是 EEFF。所以我一定是在制作 table 时遗漏了什么,但我真的没看到什么。 std::hex 是否受计算机字节序的影响?

61183十六进制为EEFF.

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

字节顺序是关于如何在 byte-addressed 内存中存储数字。

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

0x1000 * 14 + 0x100 * 14 + 0x10 * 15 + 0x1 * 15 == 61183,所以61183是十六进制的EEFF

这不受字节序的影响。