![](/img/trans.png)
[英]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.