获取字符串中的每个字符并将其转换为Hex c ++?

时间:2015-06-15 16:20:39

标签: c++ string hex user-input unsigned-char

我正在尝试将用户输入作为字符串,并将每个单独的元素转换为其十六进制等效项,作为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);
}

2 个答案:

答案 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