首页 >后端开发 >C++ >如何将 C 十六进制字符串转换为有符号整数?

如何将 C 十六进制字符串转换为有符号整数?

Patricia Arquette
Patricia Arquette原创
2024-12-27 20:45:14983浏览

How to Convert a C   Hex String to a Signed Integer?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn