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
。
这不受字节序的影响。
我在理解以下 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
。
这不受字节序的影响。