如何将十六进制字符串转换为c ++中的相应整数?

cod*_*der 2 c++ unicode

我有一个存储在文件中的unicode映射.

像下面这一行用制表符分隔.

a   0B85    0   0B85
Run Code Online (Sandbox Code Playgroud)

第二列是unicode字符.我想将其转换为0x0B85,它将存储在int变量中.

怎么做?

Tod*_*lin 7

您可以使用strtol,它可以将数字解析为long,然后您可以将其分配给您的int. strtol可以使用2到36的任何基数解析数字(即任何可用字母数字字符表示的基数).

例如:

#include <cstdlib>
using namespace std;

char *token;
...
// assign data from your file to token
...

char *err;   // points to location of error, or final '\0' if no error.
int x = strtol(token, &err, 16);   // convert hex string to int
Run Code Online (Sandbox Code Playgroud)


Eli*_*sky 7

您已经要求使用C++,所以这里是使用流的规范C++解决方案:

#include <iostream>

int main()
{
    int p;
    std::cin >> std::hex >> p;
    std::cout << "Got " << p << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

std::cin如果您的情况需要,可以替换字符串流.

  • @coder:关心详细说明?这是一个可以根据您的特殊需求进行调整的构建模块.你期望看到什么? (3认同)