fork download
  1. #include <stdio.h>
  2.  
  3. #define GETBITSTATE(state, i) (!!((0x80 >> (i & 7)) & state[i >> 3]))
  4.  
  5. int getBitState(unsigned char* state, int i) //
  6. {
  7. return !!((0x80 >> (i & 7)) & state[i >> 3]);
  8. }
  9.  
  10. void subBytes(unsigned char* state) {
  11. int i;
  12. printf("Using function:\n");
  13. for(i = 0; i<=127; i++) {
  14.  
  15. printf("%d",getBitState(state, i));
  16.  
  17. if(i%32==31){printf("\n");}
  18. else if(i%8==7) {printf(",");}
  19. }
  20. printf("Using macro:\n");
  21. for(i = 0; i<=127; i++) {
  22.  
  23. printf("%d",GETBITSTATE(state, i));
  24.  
  25. if(i%32==31){printf("\n");}
  26. else if(i%8==7) {printf(",");}
  27. }
  28. printf("\n");
  29. }
  30.  
  31. int main()
  32. {
  33. unsigned char derp[16] = {50, 67, 246, 168,
  34. 136, 90, 48, 141,
  35. 49, 49, 152, 162,
  36. 224, 55, 7, 52 };
  37.  
  38. subBytes(derp);
  39. return 0;
  40. }
Success #stdin #stdout 0.01s 1676KB
stdin
Standard input is empty
stdout
Using function:
00110010,01000011,11110110,10101000
10001000,01011010,00110000,10001101
00110001,00110001,10011000,10100010
11100000,00110111,00000111,00110100
Using macro:
00110010,01000011,11110110,10101000
10001000,01011010,00110000,10001101
00110001,00110001,10011000,10100010
11100000,00110111,00000111,00110100