我正在使用MSVC ++ 2010 Express,我很想知道如何转换
BYTE Key[] = {0x50,0x61,0x73,0x73,0x77,0x6F,0x72,0x64};
到“密码”我在这方面遇到了很多麻烦。 :(我将利用这些知识来采取诸如......之类的东西。
BYTE Key[] { 0xC2, 0xB3, 0x72, 0x3C, 0xC6, 0xAE, 0xD9, 0xB5, 0x34, 0x3C, 0x53, 0xEE, 0x2F, 0x43, 0x67, 0xCE };
和其他各种变量并相应地转换它们。
我想最终以“密码”存储在字符中。
答案 0 :(得分:2)
Key是一个字节数组。例如,如果要将其存储在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时)。有std::string
的理由,请参阅here。
答案 1 :(得分:1)
你所缺乏的只是一个空终止符,所以在这之后:
char Key_str[(sizeof Key)+1];
memcpy(Key_str,key,sizeof Key);
Key_str[sizeof Key] = '\0';
Key_str可用作常规char *样式字符串。