2017-08-23 343 views
-10

我已經真正搜索過高和低。我覺得不知何故,我只是錯過了那麼簡單的事情。C++將十六進制字符串轉換爲十六進制char *十六進制數字

哦,這裏有雲:

string x = "1234"; 

string y = "\x12\x34"; 

我希望把X成Y。

有一個我正在使用的c庫只接受y,但x不起作用。

我用openssl/sha.h庫創建了十六進制字符串,我想像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; 
相關問題