我真正的搜索高低。我觉得我只是错过了一些非常简单的东西。
哦,好吧,这就是:
string x = "1234";
和
string y = "\x12\x34";
我想把x变成y。
我正在使用的c库只接受y,但x不起作用。
我使用openssl / sha.h库创建十六进制字符串,我希望像y一样传递它们。
这必须是可能的,我只是遗漏了一些东西。
答案 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;