在保留格式的同时将十六进制字符串转换为整数

converting hex string to an integer while preserving the format

标题可能是辅助工具我真的不知道这个过程叫什么。无论如何,基本上我使用 JSON 来配置我的工具。 (这是用 C++ 编写的)。但我想为 GetAsyncKeyState 配置键绑定,但 JSON 不支持虚拟键代码所需的十六进制。一个解决方案是使用字符串,然后将其转换回 int。但是我发现没有任何方法可以正确地做到这一点。

这是预期输出的一些伪代码

string str = "0x01";

int i = 0;

// here i should be converted

std::cout << std::hex << i << std::endl; // this should output 0x01

虚拟键码不是“十六进制数”。没有十六进制数字这样的东西。只有数字、整数,您可以在源代码和文本文件中以各种方式表示它们。

没有理由在 JSON 中将虚拟键码表示为十六进制,只是因为 Microsoft 在其头文件中将它们表示为十六进制。例如,转义键 VK_ESCAPE 的虚拟键码是 0x1B。十六进制 1B 是十进制的 27 (1 * 16 + 11) 所以只需将 27 放入 JSON 以进行转义。

unsigned int i = std::stoul(str, nullptr, 16);