C++ 字符串十六进制到整数十六进制

C++ 字符串十六进制到整数十六进制,c++,std,C++,Std,我想知道如何将string x=“1f”之类的东西转换成int y=0x1f,我找到的每个主题都是通过将它转换为它的整数值(31)或将字符串转换为十六进制等价物“Hello”>48656c6f std::stringstream Strm; std::string Stng = "1f"; Strm << Stng; int Hexa; Strm >> std::hex >> Hexa; cout << Hexa; std::stringstre

我想知道如何将
string x=“1f”
之类的东西转换成
int y=0x1f
,我找到的每个主题都是通过将它转换为它的整数值(31)或将字符串转换为十六进制等价物
“Hello”>48656c6f

std::stringstream Strm;
std::string Stng = "1f";
Strm << Stng;
int Hexa;
Strm >> std::hex >> Hexa;
cout << Hexa;
std::stringstream Strm;
std::string Stng=“1f”;
Strm>std::hex>>Hexa;
您有两种选择:

  • 如果输入字符串不是正确的十六进制数,则最后一个将引发异常

    记住,在计算机中,所有的整数都存储在二进制中,十六进制只是一种表示形式。例如,ASCII字符
    'a'
    与十进制数
    97
    相同,与八进制数
    141
    相同,与十六进制数
    61
    相同,与二进制数相同(最终存储在内存中)
    0110001
    您有两个选择:

  • 如果输入字符串不是正确的十六进制数,则最后一个将引发异常


    记住,在计算机中,所有的整数都存储在二进制中,十六进制只是一种表示形式。例如,ASCII字符
    'a'
    与十进制数
    97
    相同,与八进制数
    141
    相同,与十六进制数
    61
    相同,与二进制数相同(最终存储在内存中)
    0110001

    一个非常快速的解决方案是使用boost::词法转换。您可以在这里找到所有内容

    一个非常快速的解决方案是使用boost::词法转换。你可以在这里找到所有东西

    整数不带有“我是十进制整数”或“我是十六进制整数”的标签。所有整数都是相同的。因此,如果您发现了一些将十六进制字符串转换为整数的代码,那么这就是您应该使用的代码

    一旦你有了整数,你就可以选择用十六进制打印出来。您可以使用
    hex

    int hexa = ...;
    cout << hex << hexa; // prints an int in hexadecimal form
    
    inthexa=。。。;
    
    cout整数不带有“我是十进制整数”或“我是十六进制整数”的标签。所有整数都是相同的。因此,如果您发现了一些将十六进制字符串转换为整数的代码,那么这就是您应该使用的代码

    一旦你有了整数,你就可以选择用十六进制打印出来。您可以使用
    hex

    int hexa = ...;
    cout << hex << hexa; // prints an int in hexadecimal form
    
    inthexa=。。。;
    
    你难道不想打印16进制的数字吗?如果是:cout“它只是将其转换为整数”-这是意料之中的。没有十六进制整数。
    int y=0x1f
    int y=31
    是相同的
    int
    不知道表示它的基数。0x1F和31都是相同的整数。为什么这会引起这么多的混乱?你只是想把数字打印在16进制吗?如果是:cout“它只是将其转换为整数”-这是意料之中的。没有十六进制整数。
    int y=0x1f
    int y=31
    是相同的
    int
    不知道表示它的基数。0x1F和31都是相同的整数。为什么这会引起如此多的混乱?