c++ - 将十六进制缓冲区转换为无符号整数

标签 c++ hex int unsigned stringstream

我一直在尝试将缓冲区中保存的十六进制数转换为无符号整数。然而,我正在读取的每个十六进制数字前面的“0x00”一直给我带来问题,本质上问题(在缩小版本中)看起来像这样:

char b[] = "0x0014A12";
std::stringstream ss;
unsigned int i;
ss << std::hex << b;
ss >> i;
cout << i << endl;

有什么建议吗?

注意:程序输出一个高位十进制数,等于十六进制的 CCCCCC。

最佳答案

这对我来说很好:

#include <iostream>
#include <sstream>

int main(int argc, char* argv[])
{
    using namespace std;

    string b("0x0014A12");

    stringstream ss;
    ss << hex << b;

    unsigned int dec;
    ss >> dec;

    cout << b << " = " << dec << endl;
    return 0;
}

输出:

0x0014A12 = 84498

关于c++ - 将十六进制缓冲区转换为无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9031439/

相关文章:

c++ - 用于顺序处理的高效通用缓冲队列

c - turbo c++ 中十六进制的右移运​​算符

python - 如何解码这个小端(int32)消息?

python - 将多个嵌套列表转换为整数

c++ - const 引用是错误的 C++ 11

c - 宽度不兼容的变量

c++ - 如何访问从 VTK 中的 STLreader 获得的网格的顶点和索引数组?

c++ - 为什么我不能将 char 与 "*"进行比较?

c++ - 读取 ASCII 以外的字符

c++ - 在 C++11 中声明 char 十六进制常量