Cで一度に4バイトをニブルする必要があります.
C の読み取り関数バッファー、つまり、2^n サイズのブロックをファイルからバッファーに読み取り、そこから読み取りますか?
または、読み取る独自のバッファを作成する必要がありますか?
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
.