![](/img/trans.png)
[英]How to convert unsigned char[] to std::vector<unsigned char>
[英]Convert ATL::CString to std::vector<unsigned char>
这是一个功能。
inline void Str2Data(std::vector<unsigned char> &To, const CString &From)
{
To.resize(From.GetLength() * sizeof(TCHAR) );
if (!From.IsEmpty())
memcpy(&To[0], From.GetString(), To.size());
}
它将转换为OK,但如果From =“ 123”,则To = {'1','0','2','0','3'}。
为什么会这样呢?
您的平台上的TCHAR
很有可能是wchar_t
,因此是两个字节,因此CString
实际上是宽字符的容器。 您想要执行的是转换而不是按字节复制:
inline void Str2Data(std::vector<unsigned char> &To, const CString &From)
{
if (!From.IsEmpty()) {
To.resize(From.GetLength());
std::transform(From.GetString(),
From.GetString() + From.GetLength(),
To.begin(),
[](TCHAR c) { return static_cast<unsigned char>(c); });
}
else {
To.clear();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.