试图打印出存储在数组中的每个字符的位。我查找了一些代码并尝试了一个适合我需要的版本。问题是我似乎只得到了数组中的第一个字符。
//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
。我在别人的代码中发现了这一点,我不确定。