【发布时间】:2016-10-25 07:07:50
【问题描述】:
在我的小项目中,我试图散列一些位图,位图类似于:“BMP1 /0 位图数据”。我正在使用我在互联网上找到的 md5 哈希库,它的工作原理很简单:
std::string md5(const std::string);
问题是,由于我在内存中间有一个字符串终止符,如果我尝试从这个内存中创建一个字符串,我只能得到第一部分而不是位图数据。所以,我的问题是,我不能在这里完成字符串并将整个数据放入其中吗?提前致谢。
【问题讨论】:
-
改用
std::vector<uint8_t>。 -
std::string可以包含 NUL 字节。char*不能。要从包含 NUL 字节的char缓冲区构造std::string,请使用 constructor 4 here。不确定这是否真的是您要问的,您可以添加更多细节吗?也就是说,πάντα ῥεῖ 可能是正确的,md5 并不是真正的文本字符串,而是字节数组,所以std::vector可能是更好的匹配。 -
谢谢大家,无论如何我都会尝试使用 4 号构造函数,但我也会查找向量的东西。
-
再次感谢,在您的帮助下我做到了。
-
我认为哈希库设计者只是为函数选择了错误的接口。非参考
const参数已经看起来很可疑。std::string参数不适用于通用二进制数据。它应该是std::string md5(std::vector<char> const& data),除非库希望你只散列纯 ASCII 文本。