C 十六进制字符串到有符号整数转换
假设您有一个十六进制字符串并希望将其转换为有符号 32 位整数C.例如,给定十六进制字符串“fffefffe”,二进制表示为 11111111111111101111111111111110。这表示有符号整数 -65538。
转换过程:
执行此操作有效转换、利用std::stringstream 如下:
unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x;
例如,以下代码片段生成 -65538:
#include <sstream> #include <iostream> int main() { unsigned int x; std::stringstream ss; ss << std::hex << "fffefffe"; ss >> x; // Output as a signed type std::cout << static_cast<int>(x) << std::endl; }
C 11 字符串转换函数:
对于 C 11 或更高版本,新的字符串到数字实用程序简化了此过程。 “stol”(字符串到长整型)和“stoul”(字符串到无符号长整型)函数为 C 的字符串转换功能提供了精简包装。
std::string s = "0xfffefffe"; unsigned int x = std::stoul(s, nullptr, 16);
其他注意事项:
请注意,Boost 还为这种转换提供了有用的功能,包括错误检查功能。
但是,为了简单起见和可移植性,建议使用内置的 stringstream 或此处介绍的 C 11 实用函数。
以上是如何将 C 十六进制字符串转换为有符号整数?的详细内容。更多信息请关注PHP中文网其他相关文章!