我正在尝试将用户输入作为字符串,并将每个单独的元素转换为其十六进制等效项,作为C ++中的unsigned char。例如,我想要用户输入" CL"并将其转换为存储在unsigned char中的0x43和0x4C。
string ui;
unsinged char uihex;
cout << "Please enter in command to execute: ";
cin >> ui;
for (int i=0; i<ui.length()-1; i++)
{
uihex = static_cast<unsigned char>(ui);
}
答案 0 :(得分:0)
如果要以十六进制打印值,则需要将char
变量强制转换为整数类型。这将有助于编译器选择正确的打印功能:
char c = 'C';
cout << "0x" << hex << ((unsigned int) c) << endl;
答案 1 :(得分:0)
我正在尝试将用户输入作为字符串并转换每个 将单个元素转换为十六进制等效项,作为C ++中的unsigned char。 例如,我想将用户输入“CL”并将其转换为 0x43和0x4C存储在unsigned char中。
无需转换。
char KAR = 'A'; // a char from the file
int iKAR = static_cast<int>(KAR); // cast to an int
//
std::cout << "\nltr hex dec" << std::endl;
std::cout << KAR << " == "
<< " 0x" << std::hex // change to hex radix
<< iKAR // hex: KAR cast to an int
<< " == " << std::dec // change to decimal radix
<< iKAR // decimal: KAR cast to an int
<< std::endl;
// output:
// ltr hex dec
// A == 0x41 == 65