2017-08-23 22 views
-10

私は真に高値と低値を検索しました。どういうわけか、本当にシンプルなものが欠けているような気がします。C++は16進数の文字列を16進数のchar *に変換します

まあ、ここではそれが行く:

string x = "1234"; 

string y = "\x12\x34"; 

私はYにXを有効にします。

私は使用しているyライブラリを使用していますが、xは動作しません。

私はopenssl/sha.hライブラリで16進文字列を作成しますが、yのようにそれらを渡したいと思います。

これは可能でなければならず、私は何かが不足しています。

+1

をあなたがこれまでに試してみましたか?私たちがコードを書くことを期待していますか?何か試しても失敗しましたか? – muXXmit2X

+3

まず、あなたの言語がCかC++かどうかを明示してください。 – BLUEPIXY

+0

[XY問題](http://xyproblem.info/)のように聞こえます。私は、Cライブラリが '" \ x12 \ x34 "'の形式の文字列だけを受け入れることは疑う。あなたの質問を編集して、そのCライブラリについて詳しく教えてください。 –

答えて

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; 
関連する問題