2015-10-13 108 views
2

这就是我所说的功能..C2664无法从 '的std :: string' 转换参数2 '常量无效*'

memcpy(dataHashResult,sha1.operator()(dataBuffer,16),16); 

我改变

///计算SHA1存储器块

std::string operator()(const void* data, size_t numBytes); 

std::string operator()(BYTE* data, size_t numBytes); 

的TY缓冲区的PES是..

unsigned char dataBuffer[64]; 

unsigned char dataHashResult[64]; 

任何帮助,将不胜感激..I'm新的C++ .. 感谢。

+0

你可以发布[mcve](http://stackoverflow.com/help/mcve)吗? –

+0

'operator()'重载意味着你可以(应该)使用'sha1'对象,就像函数:'sha1(dataBuffer,16)'。 – molbdnilo

+0

好吧我不知道要发布多少。 –

回答

3

试试这个:

memcpy(dataHashResult,sha1.operator()(dataBuffer,16).c_str(),16); 

的问题是,memcpy需要一个指向从复制。您的原始代码给它一个std::string对象。幸运的是,std::string具有返回“C风格”字符串的c_str()函数,即const char*

+1

非常感谢它解决了..!对于答案以及及时的答复! –

+0

@KarthikRao你应该接受他的答案。 –

+0

是的,我做了... 10分钟,它不会让我这样做。 ..感谢您的解释以及@Adam –

相关问题