C ++将十六进制的字符串转换为十六进制的char *

时间:2017-08-23 06:34:51

标签: c++

我真正的搜索高低。我觉得我只是错过了一些非常简单的东西。

哦,好吧,这就是:

string x = "1234";

string y = "\x12\x34";

我想把x变成y。

我正在使用的c库只接受y,但x不起作用。

我使用openssl / sha.h库创建十六进制字符串,我希望像y一样传递它们。

这必须是可能的,我只是遗漏了一些东西。

1 个答案:

答案 0 :(得分:0)

继续进行一些irc频道,我终于得到了一些帮助:

char nibble(char c) {
  if (c >= '0' && c <= '9')
   return c - '0';
  return 10 + (c - 'a');
}

string stringToHex(string s) {
  string o;
  for (size_t i=0 ; i<s.size() ; i+=2){
    char c = (nibble(s[i]) << 4) | nibble(s[i+1]);
    o.push_back(c);
  }
  return o;
}



   string s = "1234";
   string h = "\x12\x34";
   string o = stringToHex(s);
   cout << "s " << s << endl;
   cout << "h " << h << endl;
   cout << "o " << o << endl;
   cout << "o == h " << (o == h) << endl;