我需要将像"hello2"这样的ASCII字符串转换为十进制和十六进制表示形式(数字形式,具体类型无关紧要).所以,"你好"将是:68 65 6c 6c 6f 32 in HEX.如果不使用巨大的if语句,我如何在C++中执行此操作?
编辑:好的,这就是我选择的解决方案:
int main()
{
string c = "B";
char *cs = new char[c.size() + 1];
std::strcpy ( cs, c.c_str() );
cout << cs << endl;
char a = *cs;
int as = a;
cout << as << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
只需将其打印成十六进制,例如:
for (int i=0; i<your_string.size(); i++)
std::cout << std::hex << (unsigned int)your_string[i] << " ";
Run Code Online (Sandbox Code Playgroud)
您可能希望将精度和宽度设置为总是给出2位数等等,但总体思路保持不变.就个人而言,如果我这样做的话,我可能会使用printf("%.2x");它,因为它做得恰到好处,而且麻烦要少得多.