[ create a new paste ] login | about

Link: http://codepad.org/RsTbLKDg    [ raw code | output | fork ]

C++, pasted on Aug 11:
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)

int main()
{
  //  L'image d'un zéro, de taille 5x5
  //  01110
  //  10001
  //  10001
  //  10001
  //  01110
  //
  // on regroupe pour en faire des bytes, soit:
  // 01110100
  // 01100011
  // 00010111
  // 00000000
  //
  // codepad ne prend pas en charge la notation binaire, donc je convertis en decimal:
  uint8_t img[] = { 116, 99, 23, 0 };

  // dimensions de l'image:
  uint16_t img_w = 5;
  uint16_t img_h = 5;
  uint16_t img_sz = img_w * img_h;

  // quelques variables:
  uint8_t bit = 8;
  uint16_t bits = 0;
  uint16_t byte = 0;

  // tant qu'il reste des bits à lire
  while ( img_sz-- )
  {
    // on affiche la valeur du bit actuel:
    printf( "%d", bitRead( img[byte], --bit ) );

    // si on a lu tous les bits du byte actuel, on passe au byte suivant:
    if ( bit == 0 )
    {
      bit = 8;
      byte++;
    }

    // si on a lu tous les bits d'une ligne, on passe à la ligne suivante:
    if ( ++bits == img_w )
    {
      bits = 0;
      printf( "\n" );
    }
  }
}


Output:
1
2
3
4
5
01110
10001
10001
10001
01110


Create a new paste based on this one


Comments: