我有一个std::vector
,我需要从libgcrypt获取其内容的哈希值。
如何将std::vector<int-type> vec
的内容转换为gcry_md_hash_buffer(GCRY_MD_MD5, (void*)&digest, (void*)buffer, vec.size());
buffer
data
中的vec
?
答案 0 :(得分:5)
答案 1 :(得分:0)
gcry_md_hash_buffer()
对buffer
的期望是什么?它应该是int
的数组吗?如果是,您可以传递&vec[0]
或vec.data()
- std::vector
保证数据的基础表示与C数组中的相同。
答案 2 :(得分:0)
您还可以使用std::vector::operator[]
(索引运算符)和地址(&
)运算符:
&(buffer[0])
上面首先获得对向量的第一个元素(buffer[0]
)的引用,其地址为&(...)
。
在散列函数中使用它,
gcry_md_hash_buffer(GCRY_MD_MD5, (void*)&digest, (void*)(&(buffer[0])), vec.size());
// ^^^^^^^^^^^^
请注意,许多括号是不必要的,但我通常会将它们用来消除歧义和可能错误的风险。