我正在尝试将二进制数据从mem缓冲区复制到矢量。
请让我知道后续尝试有什么问题
每次我将矢量大小设为0
int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t> dest, uint32_t destvectorSize, int offset)
{
cout<<"\nstd::copy";
std::copy(src + offset, src + offset + sizeof(uint64_t) * length, back_inserter(dest));
return length * 8;
}
或
int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t> dest, uint32_t destvectorSize, int offset)
{
uint64_t element;
for(unsigned int i = 0 ; i<destvectorSize; i++)
{
offset = unpackData(src, element, offset);
dest.push_back(element);
}
return dest.size() * sizeof(uint64_t);
}
答案 0 :(得分:2)
在您的第一个unpackDataArray()
中:您的src
类型为uint8_t*
,但您在sizeof(uint64_t)
和std::copy
使用dest
,{ {1}}是offset
。尝试类似:
int
std::copy(static_cast<uint64_t*>(src) +
static_cast<uint64_t>(offset),
static_cast<uint64_t*>(src) +
static_cast<uint64_t>(offset) + sizeof(uint64_t) * length,
back_inserter(dest));
可能需要进一步调整。此外offset
突然出现。
答案 1 :(得分:1)
试试这个:
int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t>& dest,
uint32_t destvectorSize, int offset)
您需要通过引用传递vector
(请注意&amp; )。