конвертировать шестнадцатеричный буфер в unsigned int - PullRequest
0 голосов
/ 27 января 2012

Я пытался преобразовать шестнадцатеричное число, сохраненное в буфере, в беззнаковое целое. Однако «0x00» перед каждым шестнадцатеричным числом, с которого я читаю, создает мне проблему, по сути проблема (в уменьшенной версии) выглядит следующим образом:

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

Какие-нибудь советы?

Примечание. Программа выводит цифру с большим десятичным числом, равную значению «+» в шестнадцатеричном формате.

Ответы [ 3 ]

4 голосов
/ 27 января 2012

Это прекрасно работает для меня:

#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
1 голос
/ 27 января 2012

У меня работает следующее:

char b[] = "0x0014A12";
unsigned int i;
sscanf(b, "%X", &i);
0 голосов
/ 27 января 2012

Я предпочитаю sscanf для такого рода проблем.

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