0

割り当てのために、base64でコーディングしてxml経由でファイルを送信する必要があります。ファイルを複数の部分に分けて送信する必要があります。そのために、そのファイルからバイトのブロックを取得したいと考えています。blocksize と blocknumber パラメータでそれができることを願っていました。

しかし、常にバイトが返されるとは限りません。何か間違ったことをしている、または何か愚かなことを逃しただけだと思います。

次のコードを作成しました。

// int blocknumber (the blocknumber thats requested)
// int blocksize (by default we want to use 1024)

//Content of the block
ifstream is;
is.open(fullPath.c_str(), ios::binary);

// get length of file:
is.seekg(0, ios::end);
int length = is.tellg();

char* buffer = new char [blocksize];
//test if file is bigger then size
if (length >= blocknumber * blocksize) {
    //skip to relevent part
    is.seekg(blocknumber * blocksize, ios::beg);
    is.read(buffer, blocksize);
}

これは、データを取得したときに得られる結果です

blocknumber 0
GkXfo6NChoEBQveBAULygQRC84EIQoKIbWF0cm9za2FCh4ECQoWBAhhTgGcB

しかし、ブロック番号3では何も得られません。

4

1 に答える 1

0

その解決....それは本当に非常に愚かでした...

結局、問題はコードではなく、その後のエンコーディング部分でした。

ブロックサイズ 512 ブロック 5
=

これにより、おそらく史上最大の facepalm マークが残ります。

ご支援ありがとうございます

于 2013-01-20T16:38:18.157 に答える