将ASCII字符串转换为十进制和十六进制表示

Dan*_*der 0 c++ decimal

我需要将像"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)

Jer*_*fin 6

只需将其打印成十六进制,例如:

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");它,因为它做得恰到好处,而且麻烦要少得多.