0

Cで一度に4バイトをニブルする必要があります.

C の読み取り関数バッファー、つまり、2^n サイズのブロックをファイルからバッファーに読み取り、そこから読み取りますか?

または、読み取る独自のバッファを作成する必要がありますか?

4

1 に答える 1

0

uint32_tバッファを作成し、それをチャンクで読み込むだけです。4096 バイトは、ブロック サイズと 1 つのメモリ ページの十分な割合であるため、多くの場合うまく機能します。次に、一度に 32 ビット ワードを引き出し、ビットごとの演算子を使用して 4 バイトのそれぞれを抽出できます。

非常に大まかに言えば、次のようなものです。

#define BUFFER_SIZE 4096

// Allocate buffer and open input file

uint32_t* buffer = malloc(BUFFER_SIZE);

int fd = open(...);

// Loop while not end-of-file and read chunks

size_t bytes_read = read(fd, buffer, BUFFER_SIZE);

//...

// Process each chunk

unsigned word_count = bytes_read/sizeof(uint32_t);
for (unsigned i = 0; i < word_count; i++)
{
    uint32_t word = buffer[i];

    process(word);
}

各バイトを名前でアドレス指定する必要がある場合は、uint32_t.

于 2012-04-20T11:22:03.657 に答える