如何将字符串转换为十六进制值

时间:2012-12-06 06:06:23

标签: c++

我正在尝试将字符串值转换为其十六进制形式,但无法做到。 以下是C ++代码片段,我正在尝试这样做。

#include <stdio.h>
#include <sys/types.h>
#include <string>
#define __STDC_FORMAT_MACROS
#include <inttypes.h>

using namespace std;

int main()
{

    string hexstr;
    hexstr = "000005F5E101";
    uint64_t Value;
    sscanf(hexstr.c_str(), "%" PRIu64 "", &Value);
    printf("value = %" PRIu64 " \n", Value);

    return 0;
}

输出仅为5,这是不正确的。

任何帮助都将受到高度赞赏。 谢谢, Yuvi

2 个答案:

答案 0 :(得分:3)

如果您正在编写C ++,为什么还要考虑使用sscanfprintf?避免痛苦,只需使用stringstream

int main() { 

    std::istringstream buffer("000005F5E101");

    unsigned long long value;

    buffer >> std::hex >> value;

    std::cout << std::hex << value;
    return 0;
}

答案 1 :(得分:2)

#include <sstream>
#include <string>

using namespace std;

int main(){

  string myString = "45";
  istringstream buffer(myString);
  uint64_t value;
  buffer >> std::hex >> value;

  return 0;
}