#include <iostream>using namespace std;int main(){ char c1 = 0xab; signed char c2 = 0xcd; unsigned char c3 = 0xef; cout << hex; cout << c1 << endl; cout << c2 << endl; cout << c3 << endl;}我期望輸出如下:abcdef但是,我什么也沒得到。我猜這是因為cout始終將'char','signed char'和'unsigned char'視為字符,而不是8位整數。但是,“ char”,“ signed char”和“ unsigned char”都是整數類型。所以我的問題是:如何通過cout將字符輸出為整數?PS:static_cast(...)難看,需要更多工作來修剪多余的位。
3 回答

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
將它們強制轉換為整數類型(以及相應的位掩碼?。矗?/p>
#include <iostream>
using namespace std;
int main()
{
char c1 = 0xab;
signed char c2 = 0xcd;
unsigned char c3 = 0xef;
cout << hex;
cout << (static_cast<int>(c1) & 0xFF) << endl;
cout << (static_cast<int>(c2) & 0xFF) << endl;
cout << (static_cast<unsigned int>(c3) & 0xFF) << endl;
}

繁華開滿天機
TA貢獻1816條經驗 獲得超4個贊
關于什么:
char c1 = 0xab;
std::cout << int{ c1 } << std::endl;
簡潔,安全,并且產生與其他方法相同的機器代碼。
- 3 回答
- 0 關注
- 1285 瀏覽
添加回答
舉報
0/150
提交
取消