[英]Printing unsigned char(BYTE) in Hex format in c++. Using std::cout
[英]Strange output when printing char assigned to hex value using std::cout
我正在尝试打印这些数据类型。 但是我得到一个非常奇怪的 output 而不是我所期望的。
#include <iostream>
using namespace std;
int main(void)
{
char data1 = 0x11;
int data2 = 0XFFFFEEEE;
char data3 = 0x22;
short data4 = 0xABCD;
cout << data1 << endl;
cout << data2 << endl;
cout << data3 << endl;
cout << data4 << endl;
}
您很可能希望将 data1 和 data3 打印为某种数字。 然而,数据类型是字符,这就是为什么 C++(或 C)会将它们解释为字符,将 0x11 映射到相应的 ASCII 字符(控制字符),类似于 0x22 除了一些其他字符(参见 ASCII 表)。 如果你想将这些字符打印为数字,你需要在像这样打印它们之前将它们转换为int
(适用于 C 和 C++):
cout << (int)data1 << endl;
或更多 C++ 样式将是:
cout << static_cast<int>(data1) << endl;
如果要以十六进制显示数字,则需要使用hex
IO 操纵器更改默认的 output 基数。 之后所有 output 都以十六进制完成。 如果要切换回十进制 output,请使用dec
。 有关详细信息,请参阅cppreference.com 。
cout << hex << static_cast<int>(data1) << endl;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.