我正在尝试将字符串值转换为其十六进制形式,但无法做到。 以下是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
答案 0 :(得分:3)
如果您正在编写C ++,为什么还要考虑使用sscanf
和printf
?避免痛苦,只需使用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;
}