2011-09-29 85 views
0

我使用MSVC++ 2010 Express和我很想知道如何如何在C++中將0x70,0x61,0x73 ...等轉換爲Pas ...等等?

BYTE Key[] = {0x50,0x61,0x73,0x73,0x77,0x6F,0x72,0x64}; 

爲「password」我有很多的麻煩做這個轉換。 :(我會用這些知識來取東西,如...

BYTE Key[] { 0xC2, 0xB3, 0x72, 0x3C, 0xC6, 0xAE, 0xD9, 0xB5, 0x34, 0x3C, 0x53, 0xEE, 0x2F, 0x43, 0x67, 0xCE }; 

等各個變量,並將它們轉換成相應的。

我還想與存儲在一個char「密碼」來結束。

+0

ummmm你的意思是把hex改爲ascii? –

+0

你想結束什麼類型? '的std :: string'? 'const char *'?什麼? – icktoofay

+2

@BalaR將無法正常工作,因爲它假設字符串爲空終止。從他發佈的成本來看,情況並非如此。 – Pablo

回答

1

所有你所缺乏的是一個空結束,所以這樣做後:

char Key_str[(sizeof Key)+1]; 
memcpy(Key_str,key,sizeof Key); 
Key_str[sizeof Key] = '\0'; 

key_str的將是可以作爲一個普通的char *風格的字符串。

2

主要是一個字節數組,如果你想將其存儲在一個string,例如,你應該使用其範圍構造構建字符串,那就是:

string key_string(Key, Key + sizeof(Key)/sizeof(Key[0])); 

或者,如果你可以編譯使用C++ 11:

string key_string(begin(Key), end(Key)); 

要獲得char*我會去的C和使用方式strndup

char* key_string = strndup(Key, sizeof(Key)/sizeof(Key[0])); 

不過,如果你使用C++我強烈建議您使用string而不是char*,並且在絕對必要時僅轉換爲char const*(例如當調用C API時)。出於很好的理由,請參閱here以選擇std::string

+0

感謝您的回答,我想將它存儲到一個字符雖然。 – user954753

相關問題