0

文字列値を16進形式に変換しようとしていますが、できません。以下は、私がやろうとしている 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 しかありません。これは正しくありません。

どんな助けでも大歓迎です。ありがとう、ユヴィ

4

2 に答える 2

4

C++ を書いているのなら、なぜ and の使用sscanfを検討するのでしょうprintfか? 痛みを避けて、次のものを使用してくださいstringstream

int main() { 

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

    unsigned long long value;

    buffer >> std::hex >> value;

    std::cout << std::hex << value;
    return 0;
}
于 2012-12-06T06:18:49.107 に答える
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;
}
于 2012-12-06T06:17:43.967 に答える