配列に格納されている各文字のビットを出力しようとしています。私はいくつかのコードを調べて、自分のニーズに合ったバージョンを試しました。問題は、配列の最初の文字しか取得していないように見えることです。
//read_buffer is the array I want to iterate through, bytes_to_read is the number of
//index positions I want to_read. (array is statically allocated and filled using read()
//funct, therefore there are some garbage bits after the char's I want), bytes_to_read
//is what's returned from read() and how many bytes were actually read into array
void PrintBits(char read_buffer[], int bytes_to_read)
{
int bit = 0;
int i = 0;
char char_to_print;
printf("bytes to read: %d\n", bytes_to_read); //DEBUG
for (; i < bytes_to_read; i++)
{
char_to_print = read_buffer[i];
for (; bit < 8; bit++)
{
printf("%i", char_to_print & 0X01);
char_to_print >> 1;
}
printf(" ");
printf("bytes_to_read: %d -- i: %d", bytes_to_read, i);
}
printf("\n");
}
基本的に私が得ているのは次のとおり00000000
です。これがなぜなのかわかりません。デバッグを通じて、最初のビットのみを印刷し、他には何も印刷していないことがわかりました。また、外側のループが実際に int の 0 ~ 29 を反復処理していることも証明しました。したがって、配列内の char を反復処理する必要があります。私は困惑しています。
また、誰かが声明& 0x01
で何をしているのか教えてもらえますか。printf
他の人のコードでそれを見つけましたが、よくわかりません。