Advertisement
libchm

Untitled

Apr 16th, 2017
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.25 KB | None | 0 0
  1. // macros for the actual printing
  2.  
  3. #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c"
  4. #define BYTE_TO_BINARY(byte)                    \
  5.                 (byte & 0x80 ? '1' : '0'),      \
  6.                 (byte & 0x40 ? '1' : '0'),      \
  7.                 (byte & 0x20 ? '1' : '0'),      \
  8.                 (byte & 0x10 ? '1' : '0'),      \
  9.                 (byte & 0x08 ? '1' : '0'),      \
  10.                 (byte & 0x04 ? '1' : '0'),      \
  11.                 (byte & 0x02 ? '1' : '0'),      \
  12.                 (byte & 0x01 ? '1' : '0')
  13.  
  14. // input
  15.  
  16.         int b = 1234123;
  17.         binary_print(b, sizeof(b));
  18.  
  19.  
  20. // relevant source
  21.  
  22. void binary_print(int data, size_t data_len)
  23. {
  24.         size_t i;
  25.         unsigned int byte_shift = data_len * 8;
  26.  
  27. /*
  28.         while (1) {
  29.                 printf(BYTE_TO_BINARY_PATTERN" ", BYTE_TO_BINARY(*data>>byte_shift));
  30.                 byte_shift = byte_shift-8;
  31.                 if (byte_shift == 0)
  32.                         break;
  33.         }
  34. */
  35.  
  36.         for (i = 0; i < data_len; i++) {
  37.                 printf(BYTE_TO_BINARY_PATTERN" ", BYTE_TO_BINARY(data>>byte_shift));
  38.                 byte_shift = byte_shift-8;
  39.         }
  40.         printf("\n");
  41. }
  42.  
  43.  
  44. // output
  45.  
  46. >>> ./a.out
  47. 11001011 00000000 00010010 11010100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement