#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个赞
将它们强制转换为整数类型(以及相应的位掩码!),即:
#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 关注
- 1258 浏览
添加回答
举报
0/150
提交
取消