繁体   English   中英

将十六进制缓冲区转换为unsigned int

[英]convert hex buffer to unsigned int

我一直试图将保存在缓冲区中的十六进制数字转换为无符号整数。 但是,我正在读取的每个十六进制数字前面的“ 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

以下对我有用:

char b[] = "0x0014A12";
unsigned int i;
sscanf(b, "%X", &i);

我更喜欢sscanf来解决此类问题。

sscanf(b, "0x%x", &i);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM