C++:如何将带有 md5 哈希值的 wstring 转换为 byte* 数组?
std::wstring hashStr(L"4727b105cf792b2d8ad20424ed83658c");
//....
byte digest[16];
如何获取摘要中的 md5 哈希值? 我的回答是:
wchar_t * EndPtr;
for (int i = 0; i < 16; i++) {
std::wstring bt = hashStr.substr(i*2, 2);
digest[i] = static_cast<BYTE>(wcstoul(bt.c_str(), &EndPtr, 16));
}
std::wstring hashStr(L"4727b105cf792b2d8ad20424ed83658c");
//....
byte digest[16];
How can I get my md5 hash in digest?
My answer is:
wchar_t * EndPtr;
for (int i = 0; i < 16; i++) {
std::wstring bt = hashStr.substr(i*2, 2);
digest[i] = static_cast<BYTE>(wcstoul(bt.c_str(), &EndPtr, 16));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要从
hashStr
中读取两个字符,将它们从十六进制转换为二进制值,然后将该值放入digest
中的下一个位置 - 顺序如下:You need to read two characters from
hashStr
, convert them from hex to a binary value, and put that value into the next spot indigest
-- something on this order:C-way(我没有测试它,但它应该可以工作(尽管我可能在某个地方搞砸了),无论如何你都会得到该方法)。
C-way (I didn't test it, but it should work (though I could've screwed up somewhere) and you will get the method anyway).