#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;
}
我期望的输出如下所示:
ab
cd
ef
然而,我一无所获。
我猜这是因为cout总是将'char'、'signed char'和'unsigned char'视为字符而不是8位整数。但是,'char'、'signed char'和'unsigned char'都是整数类型。
所以我的问题是:如何通过cout将字符输出为整数?
PS:static_cast(...)很丑陋,需要更多的工作来修剪额外的位。
static_cast<int>()
) - Nimstatic_cast<unsigned>(...)
... - Nimcout << +c1;
。 - PlasmaHH0xffffffab
和0xffffffcd
。在具有32位二进制补码整数的系统上,它们被转换为较小的char
,由于二进制补码表示法的特性,它们完美地适合其中。 - Ruslan