Попытка распечатать бит каждого символа, хранящегося в массиве. Я просмотрел код и попробовал версию, соответствующую моим потребностям. Проблема в том, что я только, кажется, получаю первый символ в массиве.Итерация через массив символов, печать бит каждого символа (в C)
//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. Я обнаружил это в чужом коде, и я не уверен. Lol ... может быть, это моя проблема?
Удивительный второй набор глаз, спасибо. Я обычно инициализирую все в своих циклах на C++, но с C Я пытался что-то другое и не думал о эффектах. БЛАГОДАРЮ. – MCP