使用cpprest读取二进制数据

时间:2017-04-06 21:53:07

标签: c++ azure storage cpprest-sdk

我使用微软的cpprest sdk通过互联网读取二进制数据。 我的下面的变量stream属于concurrency::streams::istream类型。我试图读取一百万行类型struct row并处理它们。我看到我没有得到我要求的所有字节。我怀疑有一种很好的编码方式,但我还没能弄明白。我还怀疑我从缓冲区中提取一行的转换不是正确的做事方式。任何帮助将不胜感激。

struct row {
    unsigned long long tag_id : 32, day : 32;
    unsigned long long time;
    double value;
};

size_t row_count = 1000000;
concurrency::streams::container_buffer<vector<uint8_t>> buffer;
size_t bytes_requested = sizeof(row) * row_count;
size_t bytes_received = stream.read(buffer, bytes_requested).get();
// bytes_received does not always match bytes requested
for (size_t i = 0; i < row_count; ++i) {
    row &r = *(row *) &buffer.collection()[i * sizeof(row)];
    // do something with row here
}

0 个答案:

没有答案