2011-12-29 9 views
1

ビデオファイルのバイトを一度に1MBのチャンクとして読み取って、そのデータをバイトストリームに割り当てる必要があります。そして2回目にバイトを読み始めるときには前の実行の終点から始まり、1MBのバイトを読み込む必要があります。これはファイルの最後のバイトが読み取られるまで行わなければなりません。私は次のコードを使用してこれを試しましたが、このmemcpyメソッドは1MBのサイズを常にファイルの先頭から読み取るようにサポートされているようです。Objective-Cの特定の位置から特定の長さのバイトを読み取る

//original size value is 1024*1024 
    do{ 
     if((index+size) > fileSize){ 
      size = fileSize-index; 
     } 
     Byte *buff = (Byte*)malloc(size); 
     memcpy(buff, [data2 bytes], size); 

     //some logic goes here to pass the already read bytes 

     index+=size; 

    }while(index<fileSize); 

誰でもこの操作を手伝ってもらえますか?私はObjective-CとCの関連言語が新しくなっています。 おかげ

+1

「ファイルからの読み取り」操作は表示されていません。それはあなたが何をしているのかを知るのを難しくします。また、十分なコードが表示されていません。 indexやfileSizeがどのように初期化されるかはわかりません。また、示されたコードはメモリを恐ろしく漏らします。メモリを割り当てますが、決して解放しないでください。 'memcpy()'の '[data2 bytes]'表記はこれがObjective-Cであることを示すかもしれません。 (ストリームからデータを読み込むかもしれませんが、Objective-Cについてのコメントは十分にありませんが、 'data2'と' bytes'の定義がないと助けになりません)。 'do {} while()'ループに注意してください。 'while(){}'ループは通常より良いです。 –

答えて

0

あなたはmemcpyを、使用CopyMemoryに問題がある場合:(SIZE_T長 __in CONST VOID *ソース、 __in PVOID先__in 、 )

無効CopyMemoryを。

用途は同じ

あなたの問題について詳しく説明できますか?私はあなたが正確に意味するものを得ていませんでしたか?

よろしく

+0

私はあなたに例をあげましょう。私が読んでいるファイルのサイズが5 MBだとしましょう。したがって、このdo/whileが最初に実行されるときには、0から1024、2回目の1025から2048、3回目の2015から3072のようにビデオファイルのバイトを読み取らなければなりません。 memcpyを使って私はそれをすることはできません。だから私はそれを実装する方法を求めています。 – user1120633

+0

@cppKoder:スタックオーバーフローへようこそ。通常は、必要に応じて、以前の回答に新しい資料を追加して1つの回答を与える必要があります。 '


'タグは、 'これが後で追加されました'(または、より新しい、より良い答えの後に古い回答を残す)ことを示すのに便利です。 –

0

あなたがファイルを読み込むときに、ファイルポインタが自動的に移動します。この例を参照してください:

#include <windows.h> 

int main() 
{ 
    HANDLE hFile = CreateFile("c:\\a.txt",GENERIC_WRITE|GENERIC_READ,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 

    DWORD read; 
    BYTE buffer[0x400]; 

    do 
    { 
    ReadFile(hFile,buffer,0x400,&read,NULL); 
    //process the data (buffer) 
    }while(read); 

    CloseHandle(hFile); 
} 
関連する問題