2011-09-29 89 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

相关问题